分享由字符“\”轉(zhuǎn)義引起的SQL數(shù)據(jù)庫(kù)實(shí)例名稱找不到或遠(yuǎn)程連接失敗并顯示錯(cuò)誤error40的解決辦法:
一、問題介紹
很久沒有用c#去連數(shù)據(jù)庫(kù)程序了,不過在網(wǎng)上找了一些資料,基本上還是寫出來了,但是調(diào)試初步完成的程序時(shí)候,卻發(fā)現(xiàn)在con.open()這個(gè)方法總是出錯(cuò),說找不到數(shù)據(jù)庫(kù)實(shí)例名稱,或者遠(yuǎn)程連接失敗,顯示的錯(cuò)誤是error40。
錯(cuò)誤如下:
二、環(huán)境介紹
1、我的數(shù)據(jù)庫(kù)是sqlserver2008,使用的開發(fā)環(huán)境是vs2013,.net4.0
2、我的數(shù)據(jù)庫(kù)安裝采用的命名實(shí)例,所以在編寫數(shù)據(jù)庫(kù)連接字符串的時(shí)候的服務(wù)器名稱應(yīng)為 【計(jì)算機(jī)名\數(shù)據(jù)實(shí)例名】
數(shù)據(jù)庫(kù)連接字符為:
當(dāng)發(fā)現(xiàn)連接錯(cuò)誤之后,我以為是我的sql2008和vs2013環(huán)境不對(duì)而導(dǎo)致的錯(cuò)誤,之后把以前的項(xiàng)目打開,把數(shù)據(jù)庫(kù)附加上,更改一下數(shù)據(jù)連接字符串,發(fā)現(xiàn)錯(cuò)誤是一樣的。
三、解決辦法
找了一個(gè)多小時(shí)錯(cuò)誤最后發(fā)現(xiàn),以前寫sql連接字符的時(shí)候前面的都會(huì)加一個(gè)@符號(hào),因?yàn)槲易址杏凶址?ldquo;\”,如果不加的會(huì)提示錯(cuò)誤,所以我每次都會(huì)加了。但是上次重裝系統(tǒng)的時(shí)候把命名實(shí)例改為了“t”字符開頭的名稱了。然后【\t】這個(gè)表示是一個(gè)制表格符,所以并不是會(huì)出錯(cuò),本身就是一個(gè)轉(zhuǎn)義符號(hào)的正確的使用場(chǎng)合,因?yàn)闆]有出錯(cuò),也就忘記了加“@”了。
解決辦法就是在字符串前面加一個(gè)@。
注意
在寫sql連接字符串,或者是在windows平臺(tái)寫文件路徑的時(shí)候都記得在前面加上@字符,養(yǎng)成良好的習(xí)慣。