【问题标题】:Can't access database from application when SSMS is openSSMS 打开时无法从应用程序访问数据库
【发布时间】:2013-06-19 11:48:51
【问题描述】:

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

【问题讨论】:

  • 看起来您对数据库连接数设置了限制,或者您的数据库设置为单用户模式。

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


【解决方案1】:

听起来您正在单用户模式下运行。 确保您的连接字符串中没有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

【讨论】:

  • 似乎是数据库连接数是我的问题,因为它设置为 1(默认情况下)。但是我不知道如何在 SSMS 中更改它。我已将并发连接数设置为 0(即无限制),但我的数据库仍读取为 1 个连接。有什么建议吗?
  • 你能粘贴你的连接字符串吗?
  • 数据源=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Aidan\Documents\Databases\MSSQL11.AIDAN\MSSQL\DATA\DB.mdf;Integrated Security=True;Connect超时=30
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-06
  • 2019-09-26
  • 1970-01-01
  • 2019-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多