1

我有一个使用 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 配置问题。

有谁知道是什么原因造成的以及如何解决它?

4

1 回答 1

0

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

“无法打开用户默认数据库。登录失败。” 安装 SQL Server Management Studio Express 后

于 2011-12-21T22:42:51.957 回答