!本貼重點看這裏!
針對在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";
跑通了!!!!!終於!!!!!撒花!!!!!🌞
小盆友不妥之處煩請大佬指正呀~