我正在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 Client
和OleDb
提供者。
请参阅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:
我能够确定我需要为该用户授予数据库访问权限