2011-10-06 125 views

回答

2

在有權在開發SQL服務器上創建數據庫的帳戶下運行您的應用程序。如果您正在使用SQL身份驗證,請在具有此權限的連接字符串中爲SQL登錄指定憑證。默認情況下,SQL Server安裝期間指定的管理員帳戶具有此權限,但您也可以將其添加到其他登錄。

+0

+1 - 也嘗試以管理員身份運行Visual Studio。即使您自己的帳戶具有管理員權限,我發現在使用本地數據庫進行開發時,有必要在某些機器上執行此操作。 – ChrisBD

2

我曾經遇到過這個問題並解決了它。關鍵是使用SQL認證而不是Windows'。這是指定默認數據庫的最清晰的方式。以這種方式

嘗試連接字符串:

<add name="MFCConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\MFC.mdf;Initial Catalog=MFC;Integrated Security=false;User ID=sa;Password=123" 
    providerName="System.Data.SqlClient" /> 

記得從主集SA的默認數據庫到MFC,並集成安全=假。 順便說一句,sa通常是禁用的,所以首先在sql server management studio中啓用並測試它。

+0

+1極大地改變了Windows身份驗證 –

2

當找到錯誤的答案時,這可能對任何遇到這個問題的人都有用,就像我一樣。這些步驟應該是您所需要的一切,我已經複製了代碼,您可以粘貼以快速運行它。

我使用Code First,嘗試使用'create-database',但在標題中出現錯誤。 關閉並重新打開(作爲Admin這次) - 命令不被識別,但'update-database'被如此使用。同樣的錯誤。

下面是我對解決這個問題的步驟:

1)打開SQL Server Management Studio並創建了一個數據庫 「影片」

2)打開服務器資源管理器在VS2013(在 '查看')和連接到數據庫。

3)右鍵單擊連接 - >屬性,並抓住連接字符串。

4)在web.config我添加的連接字符串

<connectionStrings> 
<add name="DefaultConnection" 
    connectionString="Data Source=MyMachine;Initial Catalog=Videos;Integrated Security=True" providerName="System.Data.SqlClient" 
    /> 
    </connectionStrings> 

5)如我設置的情況下,我需要引用DefaultConnection:

using System.Data.Entity; 

namespace Videos.Models 
{ 
public class VideoDb : DbContext 
{ 
    public VideoDb() 
     : base("name=DefaultConnection") 
    { 

    } 

    public DbSet<Video> Videos { get; set; } 
} 
} 

6)在包管理器控制檯運行'update-database'來創建表格。

記住你可以用種子()在創建時插入值,在Configuration.cs:

 protected override void Seed(Videos.Models.VideoDb context) 
     { 
     context.Videos.AddOrUpdate(v => v.Title, 
      new Video() { Title = "MyTitle1", Length = 150 }, 
      new Video() { Title = "MyTitle2", Length = 270 } 
      ); 

     context.SaveChanges(); 
     } 
0

我有EF 6.0和代碼首先同樣的問題。如果您有多個具有不同連接字符串的項目並且從包管理器控制檯運行update-database,即使您選擇了正確的默認項目,Visual Studio也會從啓動項目中讀取連接字符串,因此如果在啓動時沒有連接項目然後錯誤是權限被拒絕..

您可以解決它通過設置正確的項目作爲啓動項目(只爲updte數據庫)。