2012-06-27 68 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'”错误,当我更改服务器角色后单击确定 –