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

时间:2013-05-12 19:28:06

标签: c# sql sql-server linq-to-sql

我构建了一个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

没有找到任何解决方案。

3 个答案:

答案 0 :(得分:0)

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

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

例如,尝试在登录SQL Server Management Studio时对sql server运行此操作(从SQL Server 2005开始工作):

SELECT name, default_database_name
FROM sys.server_principals

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

对于SQL Server连接字符串,它应采用以下格式:

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