2015-01-04 90 views
18

我正在WPF中的桌面應用程序中創建SqlRepository,並使用LocalDB來存儲數據。我使用以下工具代碼第一次遷移時更新數據庫命令中的錯誤

  • 的Visual Studio 2013與社區更新2
  • 實體框架6.1.2

我已經創建了本地數據庫與Microsoft SQL Server數據庫文件代碼第一次遷移程序(SqlClient)組態。數據庫創建成功,下面是從Sql獲取的連接字符串

Data Source=(LocalDB)\v11.0;Initial Catalog=D:\USERS\USERNAME\DOCUMENTS\TestDatabase\testdb.MDF;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False 

我在app.config中使用了相同的連接字符串。我可以在Visual Studio中的SQL Server數據庫資源管理器中查看數據庫對象。但在NuGet包管理器控制檯運行更新的數據庫命令時,我得到以下錯誤:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

+0

它不應該是 數據源=(本地)\ V11.0 - 或 - 數據源= \ 11.0 –

+0

我一個MVC項目在具有數據源=(localDB)\ v11.0的同一臺機器上運行。但是在該應用程序中使用了Entity Framework 5.0。我在這裏使用6.1.2 – Nps

+0

你是否設法解決這個問題?同樣的問題:( –

回答

50

我有類似的問題,並固定它,當我改變了「啓動項目」從另一個模塊包含解決方案中的所有其他項目中引用的模塊。 右鍵單擊模塊>>點擊「設爲啓動項目」

+1

我剛剛在VS 2013中得到了這個結果,我很高興我找到了這個答案,並且沒有走下開始用6/7步驟指南開始調試我的網絡設置的「邏輯」路線!我認爲這很可能是OP找到的答案;遺憾的是它沒有標記爲答案。 – lukkea

+9

爲什麼?它的工作原理是什麼?!「Default Project」下拉菜單確實如此 - wtf ... *嘆息* –

+0

這個答案只是s謝謝,謝謝。 –

1

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

此錯誤消息通知你,這是不可能的連接到SQL Server。可能的原因及其消除如下所述:

1)SQL Server未啓動。啓動它將允許您在可用SQL Server的下拉列表中查看您的SQL Server /實例。

  • 轉到開始菜單 - >控制面板 - >管理工具 - > 服務。
  • 在服務列表中找到SQL服務器(實例名,由 默認情況下它是EZPARTS5),並檢查其狀態,必須啓動
    (如果不啓動它,然後用鼠標右鍵單擊SQL Server,然後選擇
    從上下文菜單開始)。

2)防火牆阻止端口1433(MSSQL標準端口連接)。它可以按照以下步驟禁用:

  • 轉到開始菜單 - >控制面板 - >管理工具 - > 服務。
  • 查找防火牆服務,必須禁用它(如果不是,則右鍵單擊該服務並從上下文菜單中選擇「停止」) 。

注:關於這個的更多信息可以在微軟官方網站上找到:Link

3)TCP/IP協議是MSSQL協議無效。要啓用它,請參閱以下步驟:

  • 導航到「開始」菜單中的SQL Server配置管理器。
  • 在SQL Server配置 管理器中指定TCP/IP協議的設置。
  • 重新啓動計算機。

注:Link

4)確保你的數據庫引擎配置爲接受遠程連接(如果使用的是集中式數據庫):關於這方面的更多信息可以在微軟的官方網站上找到

  • 打開SQL Server Management Studio。
  • 右鍵單擊SQL Server實例 - >屬性 - >連接 - > 選中允許遠程連接到此服務器框。
  • 轉到常規部分並檢查名稱字段中 中指定的SQL Server的名稱。

5)如果您使用的是指定SQL Server實例,請確保您在連接字符串中使用該實例名稱。通常,指定數據庫服務器所需的格式是machinename \ instancename。

6)確保您的登錄帳戶具有您在登錄時使用的數據庫的訪問權限。 替代方案: 如果仍然無法獲得任何連接,則可能需要在服務器上創建一個SQL帳戶,並在該數據庫上創建相應的SQL用戶,並使用此用戶名/密碼登錄數據連接到SQL Server 。

從這個link

+0

我沒有連接到任何遠程服務器,它是localDB在本地機器上創建的mdf文件我可以在SQL Server對象資源管理器中看到實例並可以創建table/proc in Visual Studio。它意味着它是連接的。當我嘗試運行update-database命令進行代碼第一次遷移時出現問題。任何想法可能是錯誤的? – Nps

1

簡稱嘗試用此的ConnectionString:

<connectionStrings> 
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=D:\USERS\USERNAME\DOCUMENTS\TestDatabase\testdb.MDF;Initial Catalog=testdb;Integrated Security=True" providerName="System.Data.SqlClient" /> 
</connectionStrings> 
+0

我也試過這個...沒有運氣,同樣的錯誤 – Nps

1

我解決了這個錯誤更改初始項目的實體項目。

看:

更新,數據庫-Verbose 使用啓動項目 'SCVE.Web'。 < - 此ir錯誤 使用NuGet項目'SCVE.EntityFramework'。

6

迭戈的答案是正確的。

當項目中沒有標記爲啓動項目的連接字符串時,會發生此問題。然後EF嘗試連接到某個默認數據庫引擎以執行更新。在我的情況下,它試圖使用快遞,並出於某種原因,它無法連接。錯誤被拋出。

用選項「-Verbose」運行你的「更新數據庫」。其中的一行顯示使用哪個StartUp項目。檢查此項目中的連接字符串,或將啓動項目更改爲具有正確連接字符串的項目。解決了這個問題。

2

正如其他答案中所解釋的,問題通常來自軟件包管理器控制檯中包含錯誤的初始項目。 在我的情況下,控制檯忽略了我在Default Project下拉列表中選擇的值,以及-StartUpProjectName參數,並重現了嘗試連接到某些默認數據庫引擎的錯誤行爲,正如Mikk的回答所描述的,在我的情況下一個SqlExpress引擎。

我的問題是由錯誤的解決方案配置引起的:如果您的解決方案有多個項目,並且要用配置選項「多個啓動項目」運行,但是您只是從源代碼控制存儲庫下載它,有可能在解決方案中應用了默認配置選項「Single startup project」(該配置值通常未在源代碼控制中籤入)。在這種情況下,軟件包管理器控制檯只是忽略在其組合中選擇的啓動項目,並且只在解決方案中應用默認啓動項目,該項目可能沒有連接字符串,正如Mikk的答案中指定的那樣。

所以我固定它通過改變溶液性質:Common properties/Startup project /選擇Multiple startup projects,而不是Single startup project,之後包管理器控制檯會接受的項目名稱,並更新正確的數據庫。

0

如果你試圖連接到SQL Server,而不是的LocalDB的,那麼要確保在web.config文件中的默認連接工廠如下:

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
    <parameters> 
    <parameter value="Data Source=.\SQLEXPRESS2012; Integrated Security=True; MultipleActiveResultSets=True" /> 
    </parameters> 
</defaultConnectionFactory> 
0

我有同樣的問題,一個新創建的ASP。 NET項目。

首先,我嘗試設置上述啓動項目。沒有選擇啓動項目,我無法選擇一個。

最終我我的Visual Studio更新,從2015年1更新至2015年3更新和

update-database 
沒有問題的執行

相關問題