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



我正在VB中开发一个应用程序,该应用程序必须连接到具有以下信息的SQL Server 2014 Express数据库:

DBName: testDB
DBHost: USER-PCSQLEXPRESS
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登录。

我正在打印它给我的例外,上面写着

无法打开登录请求的数据库"TestDB"。登录失败。用户"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提供者。

请参阅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:

我能够确定我需要为该用户授予数据库访问权限

最新更新