2016-11-24 100 views
1

所以我試圖連接本地文件數據庫,當我調試程序或在我的開發機器上的任何地方使用它時,它工作得很好。每當我試圖把文件和在不同的機器上運行它,我得到C#本地數據庫錯誤50

錯誤50無法連接到的LocalDB:發生了本地數據庫運行時錯誤,指定的LocalDB實例不存在

現在我的問題是,我知道是什麼導致了這個問題,我只是不知道如何解決它。

我在我的測試機器上安裝了SQL Server Express 2016(它不工作),並且localDb從不初始化。

在我開發的機器,我可以轉到 「C:\ Program Files文件\ Microsoft SQL Server的\ 130 \的LocalDB」

但是我的測試機上我只有「C:\ Program Files文件\ Microsoft SQL Server的\ 130「沒有LocalDB。

我相信我的問題是,我從來沒有真正創建sql服務器實例,而只是調用該文件(請參閱下面的代碼),但我不知道如何初始化sql服務器的本地實例。我已經搜索並嘗試了不同的方法,但沒有爲我工作。

public SqlConnection connectionOpen() 
    { 
     string databaseDirectory = Convert.ToString(Directory.GetCurrentDirectory() + @"\gameDatabase.mdf"); 
     SqlConnection conn = new SqlConnection(); 
     conn.ConnectionString = @"Data Source =(LocalDB)\MSSQLLocalDB; AttachDbFilename ="+databaseDirectory +"; Integrated Security = True"; 
     conn.Open(); 
     return conn; 
    } 
    public void connectionClose() 
    { 
     string databaseDirectory = Convert.ToString(Directory.GetCurrentDirectory() + @"\gameDatabase.mdf"); 
     SqlConnection conn = new SqlConnection(); 
     conn.ConnectionString = @"Data Source =(LocalDB)\MSSQLLocalDB; AttachDbFilename ="+databaseDirectory + "; Integrated Security = True"; 
     conn.Close(); 
    } 

如前所述這個完美的作品我的本地開發機器上,無論身在何處的exe和MDF文件(只要他們在同一個目錄中那如何找到IM在代碼中MDF文件)但只要我嘗試在不同的機器上運行它,就會出現連接錯誤。

任何幫助將非常感謝!我正在拉我的頭髮!

+0

您可以創建,啓動,停止和通過[命令行]刪除實例(https://msdn.microsoft.com/en-gb/library/hh247716。 ASPX?F = 255&MSPPError = -2147217396)。但是,只有當localDB安裝在測試框上時,這纔會起作用。 –

+0

對不起,我不是所有與SQL有關的,我試圖學習,我的數據庫被稱爲「gameDatabase.mdf」和表被稱爲「gameDb」是否有什麼關係,當我使用命令行創建時調用實例? – MagicalMidge

+0

不需要道歉。實例名稱需要匹配您的連接字符串。在這種情況下,它是'(LocalDB)\ MSSQLLocalDB'。這是默認實例。它應該始終可用。這表明您需要[下載](https://msdn.microsoft.com/en-us/library/hh510202.aspx?f=255&MSPPError=-2147217396)並安裝LocalDB。 LocalDb提供引擎,.mdf具有結構和內容。 –

回答

0

對於任何可能遇到此問題的人,我希望我可以通知您解決它的「修復程序」。

從用戶「目標數據」
不需要道歉。實例名稱需要匹配您的連接字符串。在這種情況下,它是(LocalDB)\ MSSQLLocalDB。這是默認實例。它應該始終可用。這表明您需要下載並安裝LocalDB。 LocalDb提供引擎,.mdf具有結構和內容。

基本上我沒有在我的測試機器上安裝LocalDB,我的印象是它與基本版本的SQL Server Express 2016捆綁在一起,這不是這種情況,而是單獨下載。

你需要從那裏下載的SQL Server Express 2016下載,使用自定義安裝,並選擇「的LocalDB」,它會下載SqlLoaclDb.MSI運行它,然後再次嘗試你的程序,它應該工作。

0

也許缺少其他試驗機/環境數據庫,可以與cmd> sqllocaldb create MsSsqlLocalDB創建MSSqlLocalDB然後create開關改爲start並重新運行該命令。


要開始 - 有4個問題,可能會造成的共同的LocalDB SQLEXPRESS SQL Server連接錯誤SQL Network Interfaces, error: 50 - Local Database Runtime error occurred,你就開始你need to rename the v11 or v12 to (localdb)\mssqllocaldb

我發現,最簡單的是做以下 - 我附上照片和步驟尋求幫助。

首先確認你已經安裝的情況下,可以通過做到這一點通過運行CMD

  1. cmd> Sqllocaldb.exe i
  2. cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore" 如果這一步失敗檢查註冊表,就可以刪除選項d cmd> Sqllocaldb.exe d「someDb」
  3. cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb"
  4. cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"

SqlLOCALDb_edited.png