无法通过 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 Client
和 OleDb
提供商。
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:
我能够确定我需要为该用户访问数据库!
我正在 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 Client
和 OleDb
提供商。
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:
我能够确定我需要为该用户访问数据库!