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

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

數(shù)據(jù)庫系統(tǒng)概論之數(shù)據(jù)庫管理系統(tǒng)詳細(xì)資料概述

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

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

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

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

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

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

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

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

評論