-Begin-
前言
大家在學(xué)習(xí)數(shù)據(jù)庫的時(shí)候,以上兩個(gè)錯(cuò)誤基本上是不可避免的,圖1是使用SSMS登錄時(shí)出現(xiàn)的錯(cuò)誤,圖2是通過C#代碼連接數(shù)據(jù)庫時(shí)出現(xiàn)的錯(cuò)誤。
今天就這個(gè)錯(cuò)誤,跟大家做一些具體的分析,希望大家可以徹底解決這個(gè)問題。
分析
以上兩個(gè)錯(cuò)誤是完全一樣的,是同一個(gè)問題導(dǎo)致的。
其實(shí)錯(cuò)誤提示已經(jīng)清晰地說明了原因:網(wǎng)絡(luò)相關(guān)或特定于實(shí)例的錯(cuò)誤。
網(wǎng)絡(luò)相關(guān)的我們先不用管,先說“特定于實(shí)例的錯(cuò)誤”,換句更加明白的話就是“數(shù)據(jù)庫的實(shí)例名稱有錯(cuò)誤”。那數(shù)據(jù)的實(shí)例名是哪部分呢?很清楚上面數(shù)據(jù)庫登錄界面中,用紅色方框標(biāo)出來的部分就是。在C#程序中,用箭頭標(biāo)出的Server=后面的部分就是。那實(shí)例名到底對不對呢?
解決步驟1
首先,我們打開計(jì)算機(jī)的系統(tǒng)信息,看看你當(dāng)前用的計(jì)算機(jī)的名稱是什么不就知道了?如下圖:
經(jīng)過仔細(xì)對比發(fā)現(xiàn)原來上面的實(shí)例寫錯(cuò)了,在“DESKTOP-LNU3H65”后面多寫了一個(gè)“0”,這個(gè)就是問題的原因。那我們就改過來,再測試一下,登錄是OK的!如下圖:
C#程序中也修改成正確的,如下:
運(yùn)行也OK。
也就是你自己把自己電腦的名稱復(fù)制過去就解決了。
那如果以上方法還不行,還是同樣的錯(cuò)誤!怎么辦?
解決步驟2
我們打開計(jì)算機(jī)的服務(wù),找到數(shù)據(jù)庫的服務(wù),發(fā)現(xiàn)如下:
通過上面的查看,在我當(dāng)前的計(jì)算機(jī)服務(wù)中有兩個(gè)服務(wù),第一個(gè)是“默認(rèn)實(shí)例”,第二是“命名實(shí)例”,我們剛才直接用的計(jì)算機(jī)名稱,表示連接的“默認(rèn)實(shí)例”,但是現(xiàn)在這個(gè)默認(rèn)實(shí)例的狀態(tài)是禁用的,也就是服務(wù)沒有運(yùn)行,所以,還是登錄不了。解決方法就是雙擊這個(gè)服務(wù),彈出窗口,啟動類型選擇“自動”,點(diǎn)擊右下角“應(yīng)用”,然后在點(diǎn)擊“啟動”按鈕即可。
修改完成后,再次運(yùn)行肯定能夠連接上。但是,如果你的計(jì)算機(jī)上,并不是默認(rèn)實(shí)例,也沒有默認(rèn)實(shí)例,只有一個(gè)命名實(shí)例怎么辦?比如我們連接命名實(shí)例如下:
這就要求登錄數(shù)據(jù)庫時(shí),那個(gè)服務(wù)器名就要用“計(jì)算機(jī)名\\實(shí)例名”這樣來寫才行,參考如下圖的修改:
點(diǎn)擊連接,完全OK!
當(dāng)然,前提條件是要保證這個(gè)服務(wù)同樣也要正常運(yùn)行才可以。特別注意的是看好你的數(shù)據(jù)庫服務(wù)命名實(shí)例的具體名稱,不要寫錯(cuò),如果寫錯(cuò),同樣還是前面的錯(cuò)誤。而且要注意這個(gè)“反斜杠\\”要寫對。
C#程序中要按照如下要求去寫:
也就是C#中要使用兩個(gè)反斜杠來實(shí)現(xiàn)轉(zhuǎn)義,使用一個(gè)會出錯(cuò),這個(gè)是基礎(chǔ)語法知識,大家應(yīng)該是知道的。如果你不想用兩個(gè)反斜杠,也可以這么解決,在字符串的前面使用@符號來實(shí)現(xiàn)轉(zhuǎn)義,如下:
解決步驟3
如果你的計(jì)算機(jī),并不是本地連接服務(wù)器,而是連接局域網(wǎng)其他的計(jì)算機(jī)中的數(shù)據(jù)庫服務(wù),或者是遠(yuǎn)程云服務(wù)器的數(shù)據(jù)庫,那連接字符串如果是默認(rèn)實(shí)例就應(yīng)該寫“Server=IP地址”,如果是命名實(shí)例就寫“Server=IP地址/實(shí)例名稱”。IP地址必須是局域網(wǎng)正確的IP地址或者是遠(yuǎn)程服務(wù)器的外網(wǎng)IP地址。特別的,以上修改后,如果問題還是沒有解決,請按照如下方法去做:
【1】檢查網(wǎng)絡(luò)連接是否正常,確保物理連接暢通(可以使用ping IP地址的方法)
【2】檢查數(shù)據(jù)庫服務(wù)所在的計(jì)算機(jī),有沒有防火墻,如果有,查看防火墻有沒有攔截,如果攔截放行即可,或者直接關(guān)閉即可(如果允許)
【3】檢查局域網(wǎng)或遠(yuǎn)程服務(wù)器的TCP/IP協(xié)議是否打開,這里要求必須打開,方法如下:
通過“開始菜單”的目錄,找到SQLServer的安裝菜單中的“配置管理器”,
然后點(diǎn)擊,打開窗口:
雙擊“TCP/IP”,然后選擇“是”,接著點(diǎn)擊“確定”按鈕:
最后,別忘記,重新啟動SQLServer的服務(wù)??梢栽谂渲霉芾砥髦兄苯诱业椒?wù)雙擊,然后點(diǎn)擊“重新啟動”即可:
按照以上方法,即可解決所有網(wǎng)絡(luò)連接和實(shí)例問題。
解決步驟4
但是在C#程序中還有一種特殊情況,也會報(bào)同樣的錯(cuò)誤,C#程序錯(cuò)誤提示如下:
其實(shí)這個(gè)并不是實(shí)例本身的錯(cuò)誤,是因?yàn)閷懽址臅r(shí)候,把關(guān)鍵字之間的分號“;”,寫成了逗號,這樣在解析字符串的時(shí)候,它認(rèn)為Server后面的全部都是實(shí)例名稱,那這樣相對來說肯定是錯(cuò)誤的實(shí)例。
所以會出現(xiàn)同樣的錯(cuò)誤。解決方法就是當(dāng)你看到實(shí)例沒問題的時(shí)候,看看是不是把分號寫錯(cuò)了。而且,注意任何標(biāo)點(diǎn)符號,必須要用“英文半角”。
好了以上就是關(guān)于這個(gè)錯(cuò)誤產(chǎn)生的各種原因和解決方法,已經(jīng)給大家講解完畢了,希望對大家有幫助。
-END-
-
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3905瀏覽量
65873 -
登錄
+關(guān)注
關(guān)注
6文章
6瀏覽量
7880 -
代碼
+關(guān)注
關(guān)注
30文章
4891瀏覽量
70354
發(fā)布評論請先 登錄
C#數(shù)據(jù)庫實(shí)例
嵌入式數(shù)據(jù)庫有哪些應(yīng)用實(shí)例?
c#數(shù)據(jù)庫開發(fā)實(shí)例

Oracle數(shù)據(jù)庫系統(tǒng)應(yīng)用實(shí)例集錦與編程

數(shù)據(jù)庫學(xué)習(xí)教程之數(shù)據(jù)庫的發(fā)展?fàn)顩r如何數(shù)據(jù)庫有什么新發(fā)展

數(shù)據(jù)庫系統(tǒng)概論之如何進(jìn)行數(shù)據(jù)庫編程的資料概述

數(shù)據(jù)庫課件教程之數(shù)據(jù)庫實(shí)例講解資料免費(fèi)下載

Oracle數(shù)據(jù)庫鏈接建立技巧與實(shí)例講解

vb連接Access數(shù)據(jù)庫實(shí)例

上位機(jī)開發(fā)——數(shù)據(jù)庫系列問題

數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—MSSQL Server報(bào)錯(cuò)“附加數(shù)據(jù)庫錯(cuò)誤823”的數(shù)據(jù)恢復(fù)案例

【數(shù)據(jù)庫數(shù)據(jù)恢復(fù)】Oracle數(shù)據(jù)庫ASM實(shí)例無法掛載的數(shù)據(jù)恢復(fù)案例

數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫出現(xiàn)823錯(cuò)誤的數(shù)據(jù)恢復(fù)案例

數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—SQL Server附加數(shù)據(jù)庫提示“錯(cuò)誤 823”的數(shù)據(jù)恢復(fù)案例

評論