簡體   English   中英

從本地數據庫到遠程數據庫的SQL Server和EF遷移

[英]SQL Server and EF Migration from local to remote database

我正在開發一個實體框架(EF)項目,該項目充當Visual Studio 2013解決方案中另一個項目的補充類庫。 最初,我在客戶端開發系統上有一個模擬本地數據庫,並從那里構建了架構和其他實用程序。 我正在使用的數據適配器使用SQL身份驗證。

一旦我擁有經過驗證的,可以滿足我的要求的穩定版本,便將EF項目合並到解決方案中。 在本地數據庫上工作,一切正常。 然后,我通過以下方法將EF數據庫重新命名為遠程SQL服務器:

  1. 將我的數據適配器更新到遠程服務器
  2. 成功測試我的數據適配器的連接
  3. 使用正確的連接字符串更新啟動項目和EF項目中的App.Config文件
  4. 在遠程服務器上運行EF生成的T-SQL腳本
  5. 通過觀察數據庫視圖並查看我的新表來驗證T-SQL腳本是否有效

完成后,我重新運行該解決方案。 EF在框架的首次調用中引發了異常:

類型的未處理的異常“System.Data.Entity.Core.EntityException”發生在EntityFramework.SqlServer.dll

附加信息:基礎提供程序在打開時失敗。

當我檢查內部異常時,我發現了這一點:

登錄失敗。 該登錄名來自不受信任的域,不能與Windows身份驗證一起使用。

此異常使我感到困惑,因為如果您在文章開頭回憶起,我正在使用SQL身份驗證。

我目前未使用任何與ASP.NET相關的東西,我的測試床只是從控制台應用程序執行的,該控制台應用程序在遷移前沒有問題。

我想說的是這是一個管理/環境問題,而不是代碼問題,因為在本地沒有問題,而且我的T-SQL腳本似乎可以在遠程服務器上正常運行,並且可以與之連接。 不幸的是,我的SQL Server技能遠不及我的編碼能力,我無法“證明”它。 所以我發現自己茫然。

在stackoverflow上的優秀人員提供的任何幫助將不勝感激!

附加:

Per DrewJordan:

上下文構造器-

public DatabaseContext(): base("name=DatabaseContext") {}

連接字符串-

connectionString =“ metadata = res:// /Database.csdl|res:// /Database.ssdl|res://*/Database.msl;provider=System.Data.SqlClient;provider連接字符串=” data source = mycompany .com \\ SQLEXPRESS;初始目錄= sandbox2_db;集成安全性= True; MultipleActiveResultSets = True; App = EntityFramework“” providerName =“ System.Data.EntityClient”

您已通過此設置啟用 Windows身份驗證integrated security=True; 將其更改為integrated security=False; 或者您可以完全刪除該字段。

資料來源:在過去的項目中需要2個小時的bug搜索。 這是msdn參考

我發現了問題。 如前所述,我的項目使用SQL身份驗證,但是如果您在連接字符串中注意到沒有SQL用戶ID。

如果未提供用戶ID,則Entity Framework默認將使用本地客戶端用戶ID。

后者在遠程域中是合格的,而本地客戶端則不是,這就是為什么我無法連接的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM