2013-05-12 111 views
1

我构建了一个Windows窗体应用程序项目并使用Linq-to-SQL连接了一个SQL Server数据库。一切正常,直到出现此错误:无法打开用户默认数据库。登录失败。用户

无法打开用户默认数据库。登录失败。
用户登录失败

连接字符串是:

Data Source=.\SQLEXPRESS;AttachDbFilename="C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\ShippingDocumentDB.mdf";Integrated Security=True;Connect Timeout=30;User Instance=True 

没有找到任何解决方案。

+0

您是否验证过您的'连接字符串'包含所有必要的参数? – haim770 2013-05-12 19:31:02

+0

你可以在你的问题中发布你的连接字符串吗? – 2013-05-12 19:33:54

+0

我是一个相当初学者,一切工作正常,我甚至设法插入数据所以我想一切都很好关于连接字符串.. – even11 2013-05-12 19:37:02

回答

0

它听起来像当前用户帐户的默认数据库已被删除,或该数据库的权限已被删除,您正在查看的用户。

  • 此用户能够登录之前吗?
  • 你可以连接到SQL服务器作为不同的用户,并找出该用户的默认数据库是什么?

举个例子,尝试登录到SQL Server Management Studio中,当捉迷藏这对SQL Server(工作SQL服务器2005年起对):

SELECT name, default_database_name 
FROM sys.server_principals 

检查值在第二列的用户有问题,然后看看该数据库是否存在,并且用户有权限。

编辑。我们现在从您的连接字符串中知道您正在使用user instance。你需要检查数据库文件是否可用。例如,它可能会附加到SQL Server的主实例,这意味着该文件正在使用中,并且无法附加到用户实例。尝试使用Windows资源管理器制作数据库文件的副本,并将该文件副本的名称放入AttachDbFilename参数中 - 这可能表明情况正是如此。

+0

我以前用同一个用户登录过。 – even11 2013-05-12 19:43:35

+0

SQL服务器中的用户默认数据库是主服务器,并且使用同一用户 – even11 2013-05-12 19:49:18

+0

@ even11成功连接到所有数据库。在您的问题中给出您的新信息后,用新的想法更新。 – 2013-05-12 19:55:27

-1

对于SQL Server连接字符串,它应该是这种格式:

SERVER=[SVRNAME\INSTANCENAME];USER=[USERID];PWD=[PASSWORD];DATABASE=[DATABASENAME] 
+0

由向导构建的连接字符串,你认为应该修改吗? – even11 2013-05-12 19:55:00

+1

连接字符串是有效的,它仅适用于[用户实例](http://msdn.microsoft.com/zh-cn/library/ms254504.aspx),这些[用于Visual Studio](http: /msdn.microsoft.com/en-us/library/ms254504(v=vs.80).aspx)而不是服务器实例。您发布的连接字符串格式将仅在数据库永久连接到主服务器实例时起作用。你应该在你的回答中清楚地说明这一点。 – 2013-05-12 20:07:41

+0

@AndyBrown。我没有足够的声望,对不起。 – even11 2014-02-13 22:51:35

0

也许你应该定义该用户的特定数据库;

相关问题