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

时间:2013-06-19 11:48:51

标签: sql vb.net visual-studio-2012 ssms

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

1 个答案:

答案 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