Visual Studio連接數據庫出現“SQL Network Interfaces,error: 50-發生了LocalDatabase Runtime”的解決方案


!本貼重點看這裏!

針對在VS中連接數據庫出現“SQL Network Interfaces,error: 50-發生了LocalDatabase Runtime”相關的系統報錯、異常

主要問題在於本機沒有相關的數據庫(LocalDB)實例

在命令提示符中使用sqllocaldb i查看相關的localdb實例,一般只有MSSQLLocalDB也可使用,或者根據自己使用的VS版本創建新的實例(VS2017/2019一般使用v13.0,v11.0不可用

實例創建命令:sqllocaldb create v13.0

PS:如果實例損壞,使用sqllocaldb delete 相關實例名稱,再創建新的即可

創建好實例後,在代碼的App.config以及cs源碼文件中找到相關代碼(Data Source)進行修改即可👇

@"Data Source=(LocalDB)\v13.0;AttachDbFilename=|DataDirectory|\數據庫文件名字.mdf;Integrated Security=True;Connect Timeout=30";

另外查看VS相關數據庫問題,先查兩個地方:“視圖--服務器資源管理器--數據連接”“視圖--其他窗口--數據源”,數據庫和源重新匹配下


解決過程

最近研究C#的數據庫使用,沒想到真就萬事開頭難,直接卡在最開始:數據庫沒法用!!!

由於是自學,網上找了很多的案例代碼,一般來說都是可以直接跑,但偏偏這次連效果都看不了!(氣)

代碼運行中出現了一個異常👇

System.Data.SqlClient.SqlException:"在與SQL Server建立連接時出現與網絡相關的或特定於實例的錯誤。未找到或無法訪問服務器。請驗證實例名稱是否正確並且SQL Server 已配置爲允許遠程連接。(provider: SQL Network Interfaces,error: 50-發生了LocalDatabase Runtime錯誤。指定的LocalDB 實例不存在。


自行嘗試

考慮到和數據庫相關的問題,無非就是源碼bug/連接bug/數據庫文件bug,代碼和數據庫文件都沒動過,所以肯定還是連接出了問題。

VS的數據庫使用有兩個方面,一個是數據連接,另一個是數據源匹配,所以我從這兩個角度入手解決問題。

以下是我的解決方法(使用工具:VS2017):

1. 在“視圖--服務器資源管理器--數據連接”中將原始的mdf文件刪除(文件匹配本地文件夾位置,因此需要重新添加),添加代碼相關的數據庫mdf文件,然後給我彈出了這個👇

連接字符串中的數據源值指定未安裝的SQL Server 的實例。要解決此問題,可選擇安裝匹配的SQL Server 實例或修改連接字符串中的數據源值。

此路沒通,那換一條好了🙃

2. 在解決方案資源管理器中將原始的mdf和xsd文件(數據庫匹配的數據源文件)都刪掉,然後“視圖--其他窗口--數據源”添加新的連接,一路下一步,在新建連接中選擇匹配的數據庫

emmmmm然後它卡住了,3分鐘後給我彈了個這個👇

未能打開到以下數據庫的連接:
“嘗試附加到數據庫失敗並出現以下信息:在與SQL Server建立連接時出現與網絡相關的或特定於實例的錯誤。未找到或無法訪問服務器。請驗證實例名稱是否正確並且 SQL Server已配置爲允許遠程連接。(provider: SQL Network Interfaces, error:50-發生了Local Database Runtime錯誤。指定的 LocalDB實例不存在。)”請檢查連接並重試。

這個error:50有那麼點熟悉啊🙃

3. VS重裝

會不會是電腦系統的問題導致VS運行報錯呢(之前有過類似的經歷💩),用的2017聽說還是bug很多的一代,乾脆一不做二不休,上虛擬機整個19的好了

漫長的安裝過程......

由於是虛擬機簡裝,使用數據庫這幾個是必須要裝的,就算之前沒裝跑代碼系統後面會提醒安裝:

代碼跑完依舊是相同的問題(氣)🙃


成功解決

(參考鏈接👉https://www.cnblogs.com/summit7ca/p/4559694.html )

從網上看了很多關於VS連接數據庫的方法,但代碼使用的是mdf數據庫文件直接連接,網上相關的內容很少,因此只能根據部分網上大佬的建議瞎摸索😐

有一個關鍵字出現了很多次:LocalDB。

LocalDB是SqlServer Express版本的輕量級版本,植入VS供數據庫的相關操作。既然要用localdb數據庫肯定需要相關的配置文件,在App.config中我找到了!熟悉的LocalDB!!!

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="WindowsFormsApplication14.Properties.Settings.ConnectionString"
            connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\數據庫文件名字.mdf;Integrated Security=True;Connect Timeout=30"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\數據庫文件名字.mdf;Integrated Security=True;Connect Timeout=30"

(注意這裏的v11.0是解決問題的關鍵!!!)

我一直以爲這個v11.0只是版本的意思,它還指代碼所用實例!!!搞了那麼久,實際問題就在於電腦本身沒有相關的實例🙃

在命令提示符中使用sqllocaldb查看localdb的相關屬性,使用sqllocaldb i查看相關實例,一般來說只有MSSQLLocalDB,因此需要自己創建,源碼的v11.0在VS2017及往後版本是不能使用的

使用sqllocaldb create v13.0創建v13.0實例,然後輸入sqllocaldb i就可以看見實例創建成功了,配置文件也相對應的更改爲v13.0:

connectionString="Data Source=(LocalDB)\v13.0;AttachDbFilename=|DataDirectory|\數據庫文件名字.mdf;Integrated Security=True;Connect Timeout=30"

源碼的cs文件相關語句也需要修改(CTRL+F搜索Data Source即可):

@"Data Source=(LocalDB)\v13.0;AttachDbFilename=|DataDirectory|\數據庫文件名字.mdf;Integrated Security=True;Connect Timeout=30";

跑通了!!!!!終於!!!!!撒花!!!!!🌞

小盆友不妥之處煩請大佬指正呀~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章