我在程序使用的本地文件中有一个数据库。该程序的功能有限,我需要运行一些快速查询。我安装了连接到SQL Server实例的SQL Server Management Studio Express 2005(SSMSE),附加了数据库文件,并运行了查询。现在,原始程序将不再连接到数据库。我收到错误:
无法打开用户默认数据库。登录失败。用户" mycomputer \ myusername"登录失败。
我回到了SSMSE,并尝试设置默认数据库。我已经开放了Security, Logins, BUILTIN\Administrators 和BUILTIN\Users 。在下面General ,我将默认数据库设置为程序数据库。在下面User Mappings ,我确保数据库被打勾了db_datareader 和db_datawriter被打勾了。
该程序使用连接字符串:
server =(local)\实例;stactdbfilename = c:\ pathtodatabase \ database.mdf;集成安全= true;用户实例= true;
我知道数据库管理。我还想念什么?
答案
首先,尝试隔离您的问题:
- 备份文件!显然,在某些情况下,以下一些步骤可能导致文件消失。
- 您确定您正在通过管理工作室与程序连接到同一实例吗?
- 如果可能,请尝试关闭您不希望使用的实例。
- 将用户的默认数据库设置为主修,并尝试制作程序登录。
- 尝试通过管理工作室登录用户 - 由于您已经集成了安全性,因此应将管理工作室作为程序的用户开放。
- 您是否正在使用"用户实例" - 也许不知道吗?如果是这样,这可能会有所帮助:http://blogs.msdn.com/b/sqlexpress/archive/2006/11/22/connecting-to-sql-express-user-instances-in-management-studio.aspx
我没有像程序一样附上的文件工作 - 但是您写的是,您也将DB附加了管理工作室。您是否尝试过在运行程序之前将其分离到那里?也许您正在看到管理工作室和您的计划争夺对MDF-File的独家访问?
编辑:我在上面添加了第6点 - 当对此类型的登录失败故障时,这是我自己的Todos列表中的新事物。但这听起来很像您所经历的。
EDIT2:在第一个编辑中,将新项目添加到列表中。因此,评论中的数字与答案中的数字不符。