我的ASP.NET(C#)应用程序的App_Data目录中有一个数据库。如果我在Sql Server Management Studio中打开数据库,则无法从我的应用程序访问数据库。如果我关闭SSMS连接并尝试从我的应用程序访问数据库它可以工作,但在重新连接后我不能在SSMS中使用数据库。我已经检查过“限制访问”选项在数据库属性中设置为MULTI_USER。
编辑:SSMS运行时我在ASP.NET页面中遇到的错误是:
无法打开用户默认数据库。登录失败。 用户'ravi-PC \ ravi'登录失败。
当我关闭SSMS(我必须关闭SSMS,断开对象浏览器不起作用)访问ASP.NET页面时,ASP.NET页面正常工作。
当我重新打开SSMS并尝试访问数据库时,我得到的错误是:
无法打开物理文件“文件路径”操作系统错误32:“进程无法访问该文件,因为它正由另一个进程使用”(Microsoft SQL Server错误:错误5120)
编辑2 :这个问题不重复,因为我既不使用LocalDB也不使用远程服务器。我重新启动SQL服务,现在得到一个不同的错误。我能够连接,但在尝试访问表时,我收到此错误:
执行Transact-SQL语句或批处理时发生异常。 (Microsoft.SqlServer.ConnectionInfo)
其他信息:
连接断开,无法恢复。客户端驱动程序尝试一次或多次恢复连接,并且所有尝试都失败。增加ConnectRetryCount的值以增加恢复尝试次数。 (Microsoft SQL Server,错误:0)
无法打开登录请求的数据库“C:\ USERS \ RAVI \ SOURCE \ WEBSITES \ FIRSTTRY \ APP_DATA \ MYDATABASE.MDF”。登录失败。 用户'ravi-PC \ ravi'登录失败。 (Microsoft SQL Server,错误:4060)
答案 0 :(得分:0)
AttachDbFilename
和User Instance
选项用于启动连接到此特定MDF文件的SQLExpress的单个用户实例。
您写道,您不是使用LocalDB而是使用“普通”SQLExpress实例。 因此MDF文件被锁定,因为它已经附加到SQLExpress-Instance。
要使其正常工作,请将连接字符串更改为:
"Server=.\SQLEXPRESS;Database=MyDatabase;Integrated Security=True;"
答案 1 :(得分:0)
解决方案非常简单,在Visual Studio中我必须从SQL Server对象资源管理器中找到服务器,我得到了连接字符串,它可以按照我想要的方式工作。