2009-06-15 223 views
5

我有一臺2008 SQL Server Express安裝在我的一臺機器上,我試圖建立遠程連接......當我使用MS SQL Server Management Studio時,我可以登錄到數據庫不會在任何問題(有相同的憑據),但是當我嘗試在我的C#應用​​程序創建一個連接字符串,我得到一個異常:c#2008 SQL Server Express連接字符串

同時建立出現了特定情況下,網絡相關的或 錯誤連接到SQL Server的一個 連接。服務器 未找到或無法訪問。 驗證實例名稱是否爲 正確,並且SQL Server配置爲允許遠程 連接的 。

這裏是我的連接字符串樣子(私人信息被更改):

"Data Source="MACHINENAME\\SQLEXPRESS";User ID="Admin";Password="the_password";Initial Catalog="MyDatabase";Integrated Security=True;Connect Timeout=120"); 

正如我所說的,我可以登錄使用Management Studio中使用相同的設置:相同的用戶ID ,密碼和數據源名稱,但是當我試圖用上面的連接字符串打開連接時失敗。

注:

  1. 我已啓用服務器上的遠程連接,禁用防火牆,啓用TCP/IP連接到服務器,打開SQL瀏覽器。

  2. 當我在同一臺機器上時,連接字符串正常工作。

  3. 我查找了集成安全選項,並將其設置爲false以確保它不嘗試使用Windows登錄,但仍然失敗。

  4. 數據庫設置爲允許Windows登錄和數據庫登錄。

  5. 我將集成安全選項更改爲SSPI,True,最後是False,所有3都給了我與上面相同的錯誤。

有人可以告訴我,如果我做錯了什麼?

UPDATE,這是我確切的代碼(僅這一次的密碼會被刪除,而我已經添加在同一臺機器上運行的管理工作室的照片):

string _connectionString = 
      //string.Format("Server=%s;User ID=%s;Password=%s;Database=%s;Connect Timeout=120", // Same problem 
      //string.Format("Server=%s;User ID=%s;Password=%s;Database=%s;Integrated Security=False;Connect Timeout=120", // Same problem 
      string.Format("Data Source=%s;User ID=%s;Password=%s;Initial Catalog=%s;Integrated Security=False;Connect Timeout=120", // Same problem 
      "GANTCHEVI\\SQLEXPRESS", 
      "FinchAdmin", 
      "the_password", 
      "Finch"); 

Connected Via Management Studio: See Picture http://s113.photobucket.com/albums/n202/ozpowermo/?action=view&current=ManagementStudio.jpg

http://s113.photobucket.com/albums/n202/ozpowermo/?action=view&current=ManagementStudio.jpg

我想通了:

當使用日e「數據源=」標籤應該使用「用戶ID」,如果您使用用戶ID,它看起來好像不起作用!

string _connectionString = "Data Source=GANTCHEVI\\SQLEXPRESS;Initial Catalog=Finch;Integrated Security=False;User Id=FinchAdmin;Password=the_password;Connect Timeout=0";" 

回答

11

從您的連接字符串,並刪除集成安全性= TRUE(可選)添加持續安全信息= TRUE;

從MSDN:

集成安全性 - 當在連接指定假的,用戶ID和密碼。如果爲true,則使用當前的Windows帳戶憑據進行身份驗證。

+0

+1尼斯解釋。 – Praveen 2013-06-26 04:22:21

0

如果您使用Integrated Security = SSPI,該怎麼辦?

如果你不想使用Windows登錄,我相信有關刪除集成安全性參數,對方的回答是正確的。

1

好了 - 我猜你已經嘗試了所有的這些http://blogs.msdn.com/sqlexpress/archive/2005/05/05/415084.aspx

你試過sqlping上MACHINENAME \ SQLEXPRESS

你能平安MACHINENAME

最後,我敢肯定你只需要1個斜線即MACHINENAME \ SQLEXPRESS

+0

感謝回答:) 是的,我已經啓用了所有的這些設置,我可以使用Management Studio連接到數據庫,現在,我實際上Management Studio中連接。 我可以ping MACHINENAME,它會返回192.168.0.9(連接到我的路由器的機器的地址)。 由於斜槓被認爲是特殊字符,所以它在字符串中時是兩個斜線。 – Kiril 2009-06-15 17:12:53

+0

在兩個斜槓上完全正確,認爲它在配置中。衛生署! – 2009-06-16 10:16:58

1

也可能是你的SQL實例未cobfigured接受傳入的TCP連接,你可以站下檢查此rt-> SQL Server 2008 - >公理化工具 - > SQL Server配置管理器。在該工具的左側,您將看到網絡配置,將其展開以查看啓用了哪些協議。

2

試試這個

string sqlcon=("Data Source="your pc name\\SQLEXPRESS"; 
UserID=sa; 
Password=****; 
Initial Catalog="+MyDatabase+"; 
IntegratedSecurity=True;");