2016-02-27 96 views
1

我已經在ASP.NET MVC 5中創建了一個使用實體框架6代碼優先的應用程序,並將它部署到我的服務器。一切工作正常,除了涉及數據庫使用的操作/控制器操作。首先附加現有數據庫實體框架代碼的錯誤

我從我的電腦上傳一次生成的數據庫文件到服務器的App_Data文件夾。

部署後,我改變了連接字符串在我的web.config文件來自:

connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-NERC_Main-20160104065223.mdf;Initial Catalog=aspnet-NERC_Main-20160104065223;Integrated Security=True" 

connectionString="Data Source=.;AttachDbFilename=|DataDirectory|\aspnet-NERC_Main-20160104065223.mdf;Initial Catalog=aspnet-NERC_Main-20160104065223;Database=aspnet-NERC_Main-20160104065223.mdf;Trusted_Connection=Yes;Integrated Security=True;" 

其拋出的

錯誤CREATE DATABASE權限被拒絕在數據庫'主'中。

這可能是由於當前數據庫文件沒有被連接,實體框架試圖在其他一些受限制的目錄中生成新的數據庫。

我讀了AttachDbFileName僅適用於SQL Server Express實例,在我的情況下它不存在。

如何修改連接字符串,以便使用當前已上傳的數據庫。

注:

遠程服務器有一個完整的SQL Server安裝2008 R2的。該服務器不支持用戶實例。我的數據庫沒有密碼保護,因此我將Integrated Security屬性值設置爲True。如有需要,我會提供任何其他信息。

回答

0

如果您有完整版本的SQL Server,則不能只使用AttachDbFileName。相反,您需要將.mdf(和.ldf)複製到SQL Server數據文件位置,然後您需要將SQL Server Management Studio中的數據庫複製到服務器實例。

從這以後,你可以參考使用服務器名在連接字符串中該數據庫,和邏輯數據庫名點 - 是這樣的:

Server=.;Database=aspnet-NERC_Main-20160104065223;Integrated Security=True; 

根據您的數據庫設置,你可能會或可能無法使用Integrated Security - 也許你需要有一個特定的SQL Server登錄,並在連接字符串中指定的登錄(和密碼),而不是:

Server=.;Database=aspnet-NERC_Main-20160104065223;User ID=YourUserName;Password=YourPassword 

一噸的樣本見this site here H負責爲SQL Server構建有效的連接字符串。

+0

因此,如果不諮詢Server Administrator來完成將數據庫附加到服務器的任務,我絕對沒有辦法直接附加它(或者在我的情況下,使用App_Data文件夾中的現有文件)? –

+0

@AbdullahGulraiz:沒有。 「從App_Data附加一個自由浮動的'.mdf'文件」專門** ** Express版本 –

相關問題