繁体   English   中英

SSMS打开时无法从应用程序访问数据库

[英]Can't access database from application when SSMS is open

当SSMS未运行时,我可以读写数据库。 但是,当我启动SSMS并浏览到数据库时,我的应用程序无法访问该数据库(错误:无法打开登录请求的数据库“数据库名称”)。 但是,当我断开与服务器的连接并关闭SSMS时,仍然会从应用程序中收到错误消息。 我发现重新获得对数据库的访问权的唯一方法是每次都重新启动SQL Server。 请帮忙

听起来您正在以单用户模式运行。 确保您的连接AttachDBFilename=中没有AttachDBFilename=

AttachDBFilename是SQL Express特有的,它为单个用户模式旋转附加到特定DB Filename的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM