当SSMS未运行时,我可以正常读取和写入我的数据库。但是,当我启动SSMS并浏览到我的数据库时,我的应用程序无法访问该数据库(错误:无法打开登录请求的数据库“数据库名称”)。但是,当我从服务器断开连接并关闭SSMS时,我仍然从我的应用程序收到错误消息。我找到重新访问我的数据库的唯一方法是每次都重新启动我的SQL服务器。请帮忙
答案 0 :(得分:0)
听起来您正在单用户模式下运行。
确保您的连接字符串中没有AttachDBFilename=
。
AttachDBFilename
是SQL Express独有的,它为单个用户模式旋转附加到特定数据库文件名的SQL Express用户实例。对于任何生产服务器,您很可能不会使用AttachDBFilename
。它对于单用户模式下的开发和实验非常有用。
另外: 您可以终止正在运行的sql进程,而不是重新启动sql server。
DECLARE @v_spid INT
DECLARE c_Users CURSOR
FAST_FORWARD FOR
SELECT SPID
FROM master..sysprocesses (NOLOCK)
WHERE spid>50
AND status='sleeping'
AND DATEDIFF(mi,last_batch,GETDATE())>=60
AND spid<>@@spid
OPEN c_Users
FETCH NEXT FROM c_Users INTO @v_spid
WHILE (@@FETCH_STATUS=0)
BEGIN
PRINT 'KILLing '+CONVERT(VARCHAR,@v_spid)+'...'
EXEC('KILL '+@v_spid)
FETCH NEXT FROM c_Users INTO @v_spid
END
CLOSE c_Users
DEALLOCATE c_Users