2014-01-23 160 views
0

基於我所學到的here,我使用這個連接字符串:爲什麼我連接到本地SQL Server數據庫失敗?

using (var conn = new SqlConnection(@"AttachDBFilename=C:\HoldingTank\AdventureWorksLT2012_Database\AdventureWorksLT2012_Data.MDF;Integrated Security=True;User Instance=true")) 

...以(試圖)連接到本地SQL Server數據庫,但我在運行時得到此異常:

System.Data.SqlClient.SqlException was unhandled by user code 
    HResult=-2146232060 
    Message=A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) 
    Source=.Net SqlClient Data Provider 

基於我的遺產的MS Access連接字符串,我以前還曾有過:

Provider=System.Data.SqlClient; 

之前的「附加DBFilename = ...「連接字符串的一部分,但導致它自己的例外...

回答

2

您在連接字符串中缺少一些值。這裏是我最近使用的一個:

"Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\mydbname.mdf;Initial Catalog=mydbname;Integrated Security=True" 

我在想最可能的罪魁禍首是缺乏「初始目錄」價值。

1

您需要的連接字符串將取決於幾個因素,例如SQL Server的版本(LocalDB/Express/Standard),它是否是命名實例以及您擁有的身份驗證類型(SQL vs Integrated)到位。

@zippit的答案是使用集成安全性的LocalDB連接字符串的一個很好的例子。

相同的字符串到SQL Express服務器應該是這樣的:

"Data Source=serverNameOrIpAddress\sqlepxress;AttachDbFilename=|DataDirectory|\mydbname.mdf;Initial Catalog=mydbname;Integrated Security=True" 

..和到SQL Server的標準版本是這樣的:

"Data Source=serverNameOrIpAddress\sqlepxress;AttachDbFilename=|DataDirectory|\mydbname.mdf;Initial Catalog=mydbname;Integrated Security=True" 

..和到標準版Sql Server上的命名實例如下所示:

"Data Source=serverNameOrIpAddress\instanceName;AttachDbFilename=|DataDirectory|\mydbname.mdf;Initial Catalog=mydbname;Integrated Security=True" 

所有這些都假設爲inte磨碎的認證。如果您設置了sql身份驗證,您可以將「Integrated Security = True」替換爲「User Id = username; Password = pword;」

而且,如果SQL Server是在同一臺機器上,你可以使用這個數據源參數的SQL Express

.\sqlexpress 

..和這對標準的SQL Server

(local) 

這裏是我發現有用的網站:Connection Strings

+0

「B. Clay Shannon的答案是使用集成安全性的LocalDB連接字符串的一個很好的例子。」 B.粘土香農是解開這個問題的貓。 –

+0

不錯的鏈接!現在可以使用: Data Source =(LocalDb)\ v11.0; AttachDBFilename = C:\ HoldingTank \ AdventureWorksLT2012_Database \ AdventureWorksLT2012_Data.MDF; Integrated Security = True;「 –

+1

對不起,我已經編輯了我的答案,很高興你的工作。 – agileMike

相關問題