登录到SQL Server时密码不匹配

时间:2011-10-19 04:28:46

标签: sql sql-server asp-classic sql-server-2008-r2

好的, 我有一个经典的asp应用程序,我有一个连接字符串,试图连接到db。

MY连接字符串如下所示:

 Provider=SQLOLEDB;Data Source=MYPC\MSSQLSERVER;Initial
 Catalog=mydb;database=mydb;User Id=me;Password=123

现在,当我通过front-en访问数据库时,我收到此错误:

Microsoft OLE DB Provider for SQL Server error '80040e4d'
Login failed for user 'me'. 

我查看了sql profiler,我得到了这个:

 Login failed for user 'me'.  Reason: Password did not match that
 for the login provided. [CLIENT: <named pipe>]
 Error: 18456, State:8. 

我尝试了什么:

  1. 检查了100次我的密码实际上是否正确。
  2. 试过这个:alter login me with check_policy off(甚至不知道我为什么这样做)
  3. 在SSMS中为此帐户启用所有可能的权限。
  4. 更新: 4.我尝试过这个连接字符串:Provider=SQLOLEDB;Data Source=MYPC\MSSQLSERVER;Initial Catalog=mydb;database=mydb; Integrated Security = SSPI

    我收到了这个错误:

      

    Microsoft OLE DB Provider for SQL Server错误'80004005'   无法打开登录请求的数据库mydb。登录失败。

9 个答案:

答案 0 :(得分:3)

就我而言,我有一个与SQL Server 2008 R2一起使用的连接字符串,但在更新到SQL Server 2014后,我收到了上述错误。这是我的原始连接字符串:

server=.\SQLEXPRESS;database=mydb;User Id=me;Password=123

以下是适用于2014的更新连接字符串:

Integrated Security=SSPI;Data Source=.\SQLEXPRESS;Database=mydb;User Id=me;Password=123

答案 1 :(得分:1)

将您的连接字符串更改为:

Provider=SQLNCLI10;SERVER=MYPC\MSSQLSERVER;DataTypeCompatibility=80;Database=mydb;User Id=me;Password=123

它对我有用。如果服务器是远程的,则尝试使用IP;如果服务器位于同一台计算机上,则尝试使用(本地)。

希望这有帮助。

答案 2 :(得分:0)

请尝试以下格式。

strConnection ="Driver={SQL Server};Server=serverName;Database=DatabaseName;Uid=userID;Pwd=Password;"

Thanks
Jinesh Jain

答案 3 :(得分:0)

以下是使用示例连接字符串连接到SQL Server 2005的各种方法的参考:

http://www.connectionstrings.com/sql-server-2005

或者连接到SQL Server 2008:

http://www.connectionstrings.com/sql-server-2008

请记住,您应该在运行ASP应用程序的计算机上安装相应的客户端部分,即SQL Server本机客户端。

不知道您使用的是哪种方法,但OLE DB应用程序可以通过两种方式初始化数据源对象:

IDBInitialize::Initialize 

IDataInitialize::GetDataSource (seems like you are using this one)

两种方法都初始化相同的OLE DB连接属性,但使用了不同的关键字集。

如果您正在使用IDBInitialize :: Initialize

the keyword for userid is UID
the keyword for password is PWD
NO Provider keyword may be used
Trusted_Connection keyword may be used and should be No

如果您使用的是IDataInitialize :: GetDataSource

the keyword for userid is User ID
the keyword for password is Password
the Provider keyword is for SQL Server Native Client and it should be SQLNCLI10
the keyword for aunthentication Integrated Security you can remove it, or use SSPI only if you wish Windows authentication

我在下面对您的原始连接字符串进行了一些更改,请尝试一下:

Provider=SQLNCLI10;Data Source=MYPC\MSSQLSERVER;DataTypeCompatibility=80;Initial  Catalog=mydb;User ID=me;Password=123 

本文档描述了连接到SQL Server 2008 R2时使用SQL Server Native Client的OLE DB应用程序的每种连接方法的连接字符串关键字。

http://msdn.microsoft.com/en-us/library/ms130822.aspx

答案 4 :(得分:0)

尝试将用户ID改为

MYPC\me

也许在域中添加用户ID将有助于Sql server解析权限

答案 5 :(得分:0)

您是否可以使用此工作室的管理工作室登录,并查看您尝试登录的数据库?

对于保存连接字符串的文件,可能存在字符编码问题。连接字符串是否作为文本存储在自己的文件中?如果是这样,请尝试在Notepad ++中打开该文件,并检查顶部“编码”菜单中选择的内容。尝试将其更改为UTF-8或ANSI。

<强>更新

我刚读了一些评论,听起来你无法使用管理工作室登录。听起来像Windows身份验证模式与SQL Server身份验证模式是一个很好的根本原因。

试试这个:

  • 使用sa
  • 登录管理工作室并连接到您的数据库
  • 右键单击左侧对象资源管理器中的数据库服务器
  • 转到“安全”标签
  • 确保使用“SQL Server和Windows身份验证模式”,而不仅仅是“Windows身份验证模式”
  • 如果您当前正在使用“Windows身份验证模式”,请将其更改
  • 在安全性&gt;中找到您的应用程序用户登录
  • 右键单击&gt;特性
  • 确保选择“SQL Server身份验证”
  • 如果不是,您可以尝试更改它,或创建新用户,并确保选择“SQL Server身份验证”

答案 6 :(得分:0)

方式应该是例如......
Provider=SQLNCLI;Server=myServerName\theInstanceName;Database=myDataBase; Trusted_Connection=yes;

(Trusted_connection以防万一,我认为这是可选的)

答案 7 :(得分:0)

首先,您了解SQL Server身份验证和Windows身份验证之间的区别吗?基于一些评论,我不确定。

您声明您已经检查了100次密码;您是否使用SQL Server身份验证登录SSMS并在那里进行验证?我的理论是,您有一个与Windows帐户同名的SQL Server帐户,并且您使用Windows帐户连接到SSMS,而不是SQL帐户。

答案 8 :(得分:0)

确定您的计算机名称全部大写?我前段时间发现,camelCase中的名称或其中的空格可能会导致此类行为。

如果不是,请更改至少添加一个字母,否则更改将不会成功。