2013-06-19 33 views
0

當SSMS未運行時,我可以讀取和寫入我的數據庫。但是,當我啓動SSMS並瀏覽到我的數據庫時,我的應用程序無法訪問該數據庫(錯誤:無法打開登錄所請求的數據庫「數據庫名稱」)。但是,當我從服務器斷開連接並關閉SSMS時,我仍然收到來自我的應用程序的錯誤消息。我發現重新獲得我的數據庫的唯一方法是每次重新啓動我的SQL服務器。請幫助當SSMS打開時無法從應用程序訪問數據庫

+2

看起來您對數據庫連接數有限制,或者您的數據庫設置爲單用戶模式。 – MarcinJuraszek

回答

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 '[email protected]_spid) 
    FETCH NEXT FROM c_Users INTO @v_spid 
END 

CLOSE c_Users 
DEALLOCATE c_Users 
+0

看來,它是數據庫連接的數量是我的問題cos它被設置爲1(默認情況下)。但是我不知道如何在SSMS中改變它。我已將併發連接數設置爲0(即無限制),但我的數據庫仍然讀爲1連接。有什麼建議? – Aidan

+0

你可以粘貼你的連接字符串嗎? –

+0

Data Source =(LocalDB)\ v11.0; AttachDbFilename = C:\ Users \ Aidan \ Documents \ Databases \ MSSQL11.AIDAN \ MSSQL \ DATA \ DB.mdf;集成安全性= True;連接超時= 30 – Aidan