2013-05-12 43 views
1

我構建了一個Windows窗體應用程序項目並使用Linq-to-SQL連接了一個SQL Server數據庫。一切正常,直到出現此錯誤:無法打開用戶默認數據庫。登錄失敗。用戶

無法打開用戶默認數據庫。登錄失敗。
用戶登錄失敗

連接字符串是:

Data Source=.\SQLEXPRESS;AttachDbFilename="C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\ShippingDocumentDB.mdf";Integrated Security=True;Connect Timeout=30;User Instance=True 

沒有找到任何解決方案。

+0

您是否驗證過您的'連接字符串'包含所有必要的參數? – haim770 2013-05-12 19:31:02

+0

你可以在你的問題中發佈你的連接字符串嗎? – 2013-05-12 19:33:54

+0

我是一個相當初學者,一切工作正常,我甚至設法插入數據所以我想一切都很好關於連接字符串.. – even11 2013-05-12 19:37:02

回答

0

它聽起來像當前用戶帳戶的默認數據庫已被刪除,或該數據庫的權限已被刪除,您正在查看的用戶。

  • 此用戶能夠登錄之前嗎?
  • 你可以連接到SQL服務器作爲不同的用戶,並找出該用戶的默認數據庫是什麼?

舉個例子,嘗試登錄到SQL Server Management Studio中,當捉迷藏這對SQL Server(工作SQL服務器2005年起對):

SELECT name, default_database_name 
FROM sys.server_principals 

檢查值在第二列的用戶有問題,然後看看該數據庫是否存在,並且用戶有權限。

編輯。我們現在從您的連接字符串中知道您正在使用user instance。你需要檢查數據庫文件是否可用。例如,它可能會附加到SQL Server的主實例,這意味着該文件正在使用中,並且無法附加到用戶實例。嘗試使用Windows資源管理器製作數據庫文件的副本,並將該文件副本的名稱放入AttachDbFilename參數中 - 這可能表明情況正是如此。

+0

我以前用同一個用戶登錄過。 – even11 2013-05-12 19:43:35

+0

SQL服務器中的用戶默認數據庫是主服務器,並且使用同一用戶 – even11 2013-05-12 19:49:18

+0

@ even11成功連接到所有數據庫。在您的問題中給出您的新信息後,用新的想法更新。 – 2013-05-12 19:55:27

-1

對於SQL Server連接字符串,它應該是這種格式:

SERVER=[SVRNAME\INSTANCENAME];USER=[USERID];PWD=[PASSWORD];DATABASE=[DATABASENAME] 
+0

由嚮導構建的連接字符串,你認爲應該修改嗎? – even11 2013-05-12 19:55:00

+1

連接字符串是有效的,它僅適用於[用戶實例](http://msdn.microsoft.com/zh-cn/library/ms254504.aspx),這些[用於Visual Studio](http: /msdn.microsoft.com/en-us/library/ms254504(v=vs.80).aspx)而不是服務器實例。您發佈的連接字符串格式將僅在數據庫永久連接到主服務器實例時起作用。你應該在你的回答中清楚地說明這一點。 – 2013-05-12 20:07:41

+0

@AndyBrown。我沒有足夠的聲望,對不起。 – even11 2014-02-13 22:51:35

0

也許你應該定義該用戶的特定數據庫;

相關問題