“无法打开用户默认数据库”错误“User Instance = True”

时间:2010-04-20 12:22:23

标签: .net sql-server sqlclient user-instance

我有一个使用Sql用户实例化的桌面应用程序。这是我的连接字符串:

"Data Source=.\SqlExpress;
AttachDbFilename=C:\path\file.mdf;
Integrated Security=True;
User Instance=True;
Connect Timeout=100;"

我的应用程序创建了这个数据库,从Web服务中下载了大量数据,然后用它做了很多操作。

当我尝试重新打开连接时出现问题。我得到了SqlException

  

“无法打开用户默认数据库。登录失败。
  用户'myDomain \ myusername'登录失败。“

此错误在此上下文中没有任何意义 - 我没有默认数据库。我正在登录为当前应用程序创建的实例,与SqlExpress分开运行。

没有其他方法可以连接到此数据库。如果我启动SqlExpress服务并连接到默认实例,它将不可见。它仅适用于此应用程序。

磁盘上的文件被应用程序下运行的SqlExpress实例服务锁定。如果我停止应用程序并重新启动它,连接第一次工作,但重新打开失败。如果我停止应用程序,我可以删除.mdf文件并重新开始,但是当我重新打开连接时它仍然崩溃。

当我的应用程序启动时,我的当前用户应该可以访问实例中的每个数据库。

对于相同代码的其他用户不会发生这种情况,这表明这是一个SQL配置问题。

有没有人知道导致这种情况的原因以及如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果仍然存在问题,请查看我的答案中的要点 - 特别是关于用户实例的MSDN博客链接:

"Cannot open user default database. Login failed." after installing SQL Server Management Studio Express