无法通过 VB.net 连接到 SQL 服务器,但我可以使用相同的凭据从 SSMS 登录服务器

Cannot connect to SQL Server via VB.net but I can login to the server from SSMS with the same cridentials

我正在 VB 开发一个应用程序,它必须连接到 SQL Server 2014 Express 数据库并提供以下信息:

DBName: testDB
DBHost: USER-PC\SQLEXPRESS
DBUser: testuser
DBPass: testpass

和以下代码建立连接:

Public Shared Sub connect(DBName As String, DBHost As String, DBUser As String, DBPass As String)

    Dim builder As SqlConnectionStringBuilder = New SqlConnectionStringBuilder()
    builder.DataSource = DBHost
    builder.UserID = DBUser
    builder.Password = DBPass
    builder.InitialCatalog = DBName

    connection = New SqlConnection(builder.ConnectionString)
    connection.Open()

End Sub

我可以使用此信息(使用 SSMS)正常登录,但不能使用此处的代码。现在我知道这段代码可以正常工作,因为我在另一台运行良好的机器上使用过它。在这两种情况下,服务器都在本地托管。我已经在网络配置中启用了所有协议,但我仍然无法通过此代码登录。此外,我将登录设置为也可以使用 SQL 登录。

我正在打印它给我的异常,它说

Cannot open database "TestDB" requested by the login. The login failed. Login failed for user 'testuser'.

为什么它允许我通过 SSMS 而不是通过我的程序登录?

尝试改变这一行:

Dim builder As SqlConnectionStringBuilder = New 
    SqlConnectionStringBuilder("Integrated Security=SSPI;") 

Dim builder As SqlConnectionStringBuilder = New 
    SqlConnectionStringBuilder("Integrated Security=true;")

这意味着什么:

Integrated Security = False : 在连接中指定用户 ID 和密码。

Integrated Security = true : 当前 Windows 帐户凭据用于身份验证。但是,请注意它不适用于所有 SQL 提供商。它会抛出 OleDb 提供商的异常。

Integrated Security = SSPI :这等同于 true,但它适用于 SQL ClientOleDb 提供商。

Please, see connection strings at MSDN.

你的错误Cannot open database "TestDB" requested by the login. The login failed. Login failed for user 'testuser'.意味着:

  • 你写错了数据库的登录名或用户TestDB
  • 用户 testuser 在您的 数据库中不存在

运行查看你的数据库中是否存在testuser

USE YourDatabase
SELECT * FROM sysusers

此外,请确保您设置了正确的数据库用户密码。

更新者Nick.McDermaid:

我能够确定我需要为该用户访问数据库!