0

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

4

1 回答 1

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
于 2013-06-19T11:51:14.470 回答