分享由字符“\”轉義引起的SQL數據庫實例名稱找不到或遠程連接失敗並顯示錯誤error40的解決辦法:
一、問題介紹
很久沒有用c#去連數據庫程序了,不過在網上找了一些資料,基本上還是寫出來了,但是調試初步完成的程序時候,卻發現在con.open()這個方法總是出錯,說找不到數據庫實例名稱,或者遠程連接失敗,顯示的錯誤是error40。
錯誤如下:
二、環境介紹
1、我的數據庫是sqlserver2008,使用的開發環境是vs2013,.net4.0
2、我的數據庫安裝采用的命名實例,所以在編寫數據庫連接字符串的時候的服務器名稱應為 【計算機名\數據實例名】
數據庫連接字符為:
當發現連接錯誤之後,我以為是我的sql2008和vs2013環境不對而導致的錯誤,之後把以前的項目打開,把數據庫附加上,更改一下數據連接字符串,發現錯誤是一樣的。
三、解決辦法
找了一個多小時錯誤最後發現,以前寫sql連接字符的時候前面的都會加一個@符號,因為我字符串中有字符“\”,如果不加的會提示錯誤,所以我每次都會加了。但是上次重裝系統的時候把命名實例改為了“t”字符開頭的名稱了。然後【\t】這個表示是一個制表格符,所以並不是會出錯,本身就是一個轉義符號的正確的使用場合,因為沒有出錯,也就忘記了加“@”了。
解決辦法就是在字符串前面加一個@。
注意
在寫sql連接字符串,或者是在windows平台寫文件路徑的時候都記得在前面加上@字符,養成良好的習慣。