无法打开登录请求的数据库“”。登录失败。用户“sa”登录失败

Posted

技术标签:

【中文标题】无法打开登录请求的数据库“”。登录失败。用户“sa”登录失败【英文标题】:Cannot open database "" requested by the login. The login failed. Login failed for user 'sa' 【发布时间】:2013-02-10 07:02:51 【问题描述】:

更新 3: 由于没有人按照@Timen 的建议回答我的第一个问题,我尝试使用 SQL SERVER 身份验证。 我通过SQL SERVER MANAGEMENT STUDIO 启用了SQL Authentication 并启用了sa 并为其设置了一个简单的密码。(在.\sqlexpress 下)。 我可以通过sa 及其密码从SQL SERVER MANAGEMENT STUDIO 成功登录数据库,但是当我尝试从我的应用程序中登录时,它会失败并显示以下错误消息:

无法打开登录请求的数据库“dbNegin”。登录失败。 用户“sa”登录失败。

我需要说我也将数据库所有者更改为 sa ,但我得到了这个错误!! 我现在怎么解决这个问题? :( 顺便说一下,这是我的应用程序中用于连接数据库的连接字符串:

string sqlconstring = @"Data Source=.\sqlexpress;User ID=sa;Password=123456;Initial Catalog=dbNegin";

顺便附上我的数据库(地址如下)

D:\TestDb\Debug\dbNegin.mdf

这是 SQL 错误日志:

2013-02-25 21:51:20.80 spid51      Starting up database 'C:\USERS\FRIEND\DESKTOP\RELEASE\DBNEGIN.MDF'.
2013-02-25 21:51:21.33 spid51      Starting up database 'mytestdb'.
2013-02-25 21:51:21.60 spid51      Starting up database 'C:\USERS\FRIEND\DESKTOP\RELEASE\DBNEGIN.MDF'.
2013-02-25 21:51:35.60 Logon       Error: 18456, Severity: 14, State: 38.
2013-02-25 21:51:35.60 Logon       Login failed for user 'sa'. Reason: Failed to open the explicitly specified database. [CLIENT: <local machine>]
2013-02-25 22:11:00.79 Server      Server resumed execution after being idle 246 seconds: user activity awakened the server. This is an informational message only. No user action is required.
2013-02-25 22:11:00.97 spid51      Attempting to load library 'xplog70.dll' into memory. This is an informational message only. No user action is required.
2013-02-25 22:11:01.04 spid51      Using 'xplog70.dll' version '2007.100.1600' to execute extended stored procedure 'xp_msver'. This is an informational message only; no user action is required.
2013-02-25 22:57:29.06 spid53      Starting up database 'C:\USERS\FRIEND\DESKTOP\RELEASE\DBNEGIN.MDF'.
2013-02-25 22:58:40.51 Logon       Error: 18456, Severity: 14, State: 38.
2013-02-25 22:58:40.51 Logon       Login failed for user 'sa'. Reason: Failed to open the explicitly specified database. [CLIENT: <local machine>]
2013-02-25 23:07:09.86 Logon       Error: 18456, Severity: 14, State: 38.
2013-02-25 23:07:09.86 Logon       Login failed for user 'sa'. Reason: Failed to open the explicitly specified database. [CLIENT: <local machine>]
2013-02-25 23:07:16.37 Logon       Error: 18456, Severity: 14, State: 38.
2013-02-25 23:07:16.37 Logon       Login failed for user 'sa'. Reason: Failed to open the explicitly specified database. [CLIENT: <local machine>]

老问题 我正在尝试以两种模式连接到数据库(在我的系统上,数据库位于 SQLSERVER Data 子文件夹下,而在我的客户系统中,我希望它位于我的可执行文件旁边。为此,我有两个连接字符串,一个是我自己的系统是:

“数据源=.\SQLExpress;初始目录=dbNegin;集成安全=True”

还有一台用于客户机器:

"数据源=.\SQLExpress;AttachDbFilename=C:\Users\Master\Documents\Visual Studio 2010\Projects\ProjectNegin\ProjectNegin\bin\Debug\dbNegin.mdf;Integrated Security=True;Connect Timeout=30;用户实例=True"

,问题是我试图在我的系统上测试第二个场景,我将最新的数据库放在我的可执行文件旁边并更改了连接字符串并尝试运行应用程序,对于应用程序的某些部分它连接到数据库并检索信息,但在其他一些上失败并出现此错误:

无法打开登录请求的数据库“dbNegin”。登录失败。 用户“Master-PC\Master”登录失败。

Master-PC\Master是我电脑的名字!我不记得在我的连接字符串中使用过它,也不知道它来自哪里以及如何摆脱它。更糟糕的是,现在我以前的连接字符串也因这个错误而失败!!。 我需要说的是,在我尝试第二个连接字符串(可执行文件旁边的那个)之前,我重命名了 SQLSERVER DATA 子文件夹中的数据库,这样我就不会错过任何东西,我只能连接到数据库通过 atatchfile 方法(以避免可能连接到我的默认数据库连接字符串) 当我尝试使用我以前的连接字符串时,我将我的数据库重命名为其原始名称(我的意思是 DATA 子文件夹中的那个)。但我仍然收到此错误。 我怎么解决这个问题 ?


UPDATE: 当我尝试使用SQL SEVER MANAGEMENT STUDIO 查看我的数据库时,数据库显示为:

(恢复等待中...)

我对此无能为力(因为它说它必须修理或丢弃!我找不到修理菜单!)

UPDATE 2: 我尝试删除数据库表单 Management Studio 并重新附加它!将其从 Management Studio 中的数据库列表中删除后。 现在我无法重新附加它,我得到了错误:

标题:Microsoft SQL Server Management Studio

未能为此请求检索数据。 (Microsoft.SqlServer.Management.Sdk.Sfc)

如需帮助,请点击: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&LinkId=20476

------------------ 附加信息:

执行 Transact-SQL 语句时发生异常或 批。 (Microsoft.SqlServer.ConnectionInfo)


CREATE FILE 遇到操作系统错误 5(检索失败 此错误的文本。原因:15105)尝试打开或创建时 物理文件 'C:\Program Files\Microsoft SQL 服务器\MSSQL10.SQLEXPRESS\MSSQL\DATA\新文件夹\dbNegin.mdf'。 (Microsoft SQL Server,错误:5123)

如需帮助,请点击: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=10.00.2531&EvtSrc=MSSQLServer&EvtID=5123&LinkId=20476

【问题讨论】:

【参考方案1】:

如果您在您和您的客户之间使用 LAN 连接,请使用此连接字符串。

"Data Source=Master-PC\Master;;Initial Catalog=dbNegin;Integrated Security=True;Connect Timeout=30;User Instance=True"

"Data Source=Master-PC\Master\SQLExpress;Initial Catalog=dbNegin;Integrated Security=True;Connect Timeout=30;User Instance=True"

对于数据源,您还可以使用 PC 的 IP 地址。 这会对你有所帮助。

【讨论】:

谢谢,但它们是两个不同的独立系统,没有任何连接,我尝试在部署前使用第二个连接字符串测试应用程序,以便如果有任何磨损,我会提前修复它!【参考方案2】:

这个话题回答了我的问题:你可以在那里找到很好的信息:The Cause For This Problem And How to Solve It . 这是页面截图:

【讨论】:

请引用文章!链接最终会死掉,然后答案就变得毫无用处。 您必须通过您从该链接和屏幕截图中理解的内容自行回答问题【参考方案3】:

尝试使用 sqlserver 身份验证模式而不是 windows 身份验证..这可能对你有用..

【讨论】:

【参考方案4】:

仅更改您的连接字符串!

没有

    删除旅游连接字符串 为 SQL Server 身份验证创建密码 创建新表单 添加数据网格浏览器 通过您创建的密码将您的数据网格浏览器与数据库连接

现在通过密码游览 app.config 生成新的连接字符串和数据库标识符

如果你改变你的连接字符串只是不工作

【讨论】:

以上是关于无法打开登录请求的数据库“”。登录失败。用户“sa”登录失败的主要内容,如果未能解决你的问题,请参考以下文章

无法打开用户默认数据库.登录失败.怎么解决

SQL SERVER 2012 新增数据库显示登录失败

无法打开用户默认数据库。登陆失败。 用户SA登陆失败(SQL 错误4064) 怎么解决啊

SQL2008无法连接到.SQLEXPRESS,用户'sa'登录失败(错误18456)图文解决方法

SQL2008无法连接到.SQLEXPRESS,用户'sa'登录失败(错误18456)图文解决方法

IIS的网站提示数据库用户ASPNET登录失败?