2012-06-27 67 views
39

我使用代碼首先在我的項目,部署在主機上否認DATABASE權限,但我得到的錯誤在數據庫中創建「主」(EF代碼優先)

在數據庫中創建「主」否認DATABASE權限。

這是我的連接字符串:

<add name="DefaultConnection" 
    connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-test-2012615153521;Integrated Security=False" 
    providerName="System.Data.SqlClient;User ID=test;Password=test"/> 

回答

1

拒絕權限是一個安全的,所以你需要添加一個「用戶」的權限..

  1. 右鍵單擊數據庫(這是。 mdf文件)然後屬性
  2. 轉到安全選項卡
  3. 單擊繼續按鈕
  4. 單擊添加按鈕
  5. 單擊高級按鈕
  6. 將顯示另一個窗口,然後單擊右側的「查找」按鈕。
  7. 在下面的字段中,轉到最下面,然後單擊「用戶」。點擊確定。
  8. 單擊您已創建的權限「用戶」,然後選中完整控件複選框。

你走了。您現在擁有數據庫的權限。

+81

怎麼能夠用鼠標右鍵單擊數據庫,當創建數據庫的權限被拒絕? –

+14

當它還沒有創建時,不能右擊數據庫! – Morteza

+0

在sql server 2008 R2中,第3步應該是單擊編輯而不是繼續。 –

4

我已經用我的方式解決了這個問題。 嘗試連接字符串中這樣說:

<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" /> 

記得從主設置默認dB到MFC(你的情況,ASPNET試驗2012615153521)。

+0

順便說一句,在開發環境中,設置「集成安全性= true」以避免錯誤「只有集成安全性可以...」,否則您將無法通過Visual Studio訪問數據庫。 – cheny

18

請確保您有權限創建數據庫。(如user2012810提到。)

看來你的代碼首先使用另一個(或默認)的連接字符串。 您是否在上下文類中設置了連接名稱?

public class YourContext : DbContext 
    { 
     public YourContext() : base("name=DefaultConnection") 
     { 

     } 

     public DbSet<aaaa> Aaaas { get; set; } 
    } 
15

當試圖使用Code First創建數據庫(無數據庫方法)時,我遇到了同樣的問題。問題是EF沒有足夠的權限爲您創建數據庫。

因此,我使用Code First(使用現有數據庫方法)工作。

步驟:

  1. 創建SQL Server管理工作室(優選不表)的數據庫。
  2. 現在回到Visual Studio,在服務器資源管理器中添加新建數據庫的連接。
  3. 現在使用數據庫的連接字符串並將其添加到名爲「Default Connection」的app.config中。
  4. 現在在Context類中,爲它創建一個構造函數並從基類中擴展它,並將連接字符串的名稱作爲參數傳遞。 就像,

    public class DummyContext : DbContext 
    { 
        public DummyContext() : base("name=DefaultConnection") 
        { 
        } 
    } 
    

現在,即指否極泰來運行你的代碼,看看錶被添加到該提供的數據庫。

1

我將添加我不得不做的事情,因爲它是上述的合併。 我使用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(); 
     } 
1

檢查連接字符串是在你的web.config。我刪除了該節點並將其放入我的Web.Debug.config中,這是我收到的錯誤。將它移回到Web.config並且工作得很好。

6

運行Visual Studio作爲管理員,它爲我工作

+2

沒有爲我工作! – kulNinja

+0

適合我,謝謝。 –

1

運行Visual Studio作爲管理員,把你的SQL Server驗證的登錄(誰擁有創建數據庫的權限)和密碼,在連接字符串中,它工作了我

0

我沒有證明我的解決方案,只是假設。

在我的情況下,它是由連接字符串中的域名引起的。我有一個假設,如果DNS服務器不可用,它不能連接到數據庫,因此實體框架試圖創建此數據庫。但是許可被拒絕,這是正確的。

3

如果您在解決方案中有多個項目,並且將錯誤的項目設置爲啓動項目,也會發生此錯誤。

這很重要,因爲Update-Database使用的連接字符串來自啓動項目,而不是來自程序包管理器控制檯中選擇的「默認項目」。

(學分masoud

2

由於錯誤提示,SQL登錄沒有權限創建數據庫。權限在登錄具有所需角色時被授予。有權創建,更改和刪除數據庫的角色是dbCreator。因此應該將其添加到登錄名以解決問題。可以在SQL Management Studio上通過右鍵單擊用戶然後轉到屬性>服務器角色來完成。我遇到了同樣的錯誤,並通過這樣做來解決它。

0

如果你正在運行IIS下的網站,你可能需要將應用程序池的標識設置爲管理員。

0

這個問題的解決方案是爲吃一塊cake.This問題,當您的用戶憑據更改和SQL服務器不能識別你。沒有需要卸載現有的SQL Server實例。你可以通常出現那樣簡單隻需使用新的實例名稱安裝新實例即可。假設你的最後一個實例名是'Sqlexpress',所以這次在安裝過程中,將你的實例命名爲'Sqlexpress1'。另外,請不要忘記在安裝過程中選擇混合模式(即Sql Server身份驗證& Windows身份驗證),並提供一個系統管理員密碼,如果將來出現此類問題,該密碼將非常方便。 此解決方案將明確解決此問題。謝謝..

11

我有同樣的問題。這是什麼工作對我來說:

  1. 轉到SQL Server Management Studio中並運行它作爲管理員
  2. 選擇安全 - >然後登錄
  3. 選擇用戶名或任何用戶,這些用戶的登錄下訪問數據庫並雙擊它。
  4. 給他們一個服務器角色,將給他們創建數據庫的憑據。在我的情況下,公衆已經選中狀態,以便我檢查dbcreator系統管理員
  5. 在軟件包管理器控制檯上再次運行update-database。數據庫現在應該成功創建。

這裏是一個圖像,這樣可以得到更大的畫面,我模糊了我當然憑據:enter image description here

+0

作爲管理員爲我解決它,什麼是noob ... –

+2

我得到「添加成員失敗serverRole'dbcreator'」錯誤,當我更改服務器角色後單擊確定 –