我有一个用vb.net编写的Windows应用程序。它与SQL Server交互,我们可以在服务器上从中创建用户。从应用程序我禁用了一些用户(它在后台运行 DROP USER(loginName)命令)。在这种情况下处理SqlException
时发现了一些奇怪的行为。在尝试使用已禁用的用户登录SQL服务器(通过代码和SQL服务器管理工作室)时,对于某些用户而言,它提供了4064错误代码,而对于其他用户则提供了18456错误代码。
以下是一些更多细节:
SqlException
时,为
用户在登录SQL时出现4064错误,我得到4060错误。对于
用户使用18456代码,它工作正常,我得到相同的错误代码
异常。根据官方说明:
由于SQL Server登录有问题,因此无法连接 默认数据库。数据库本身无效或登录缺乏 对数据库的CONNECT权限。
和
当由于涉及错误密码或用户名的身份验证失败而拒绝连接尝试时,会向客户端返回类似于以下内容的消息:"用户登录失败'&#39 ;。 (Microsoft SQL Server,错误:18456)"。
找不到除this以外的4060的官方详细说明:
无法打开数据库"%。* ls"登录请求。登录失败。
有几个论坛说它与登录失败有关。我试着找一些关于这3个代码的失败性质差异的数据,但是找不到。
我们可以获得4064或4060代码的场景是什么?是否有任何重叠的失败案例,我们可以获得其中任何一个(如18456和4060)?
编辑:以下是创建连接的代码:
connection = new SqlConnection()
Dim builder As New SqlConnectionStringBuilder
builder.DataSource = "localhost"
builder.InitialCatalog = "DatabaseA"
builder.ConnectTimeout = 120
builder.UserID = username
builder.Password = Encrypt(password)
connection.ConnectionString = builder.ConnectionString