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