CREATE DATABASE权限在数据库'master'中被拒绝(EF代码优先)

我在我的项目中使用代码优先,并在主机上部署,但我得到错误

CREATE DATABASE权限在数据库“master”中被拒绝。

这是我的连接string:

<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. 右键单击你的数据库(这是.mdf文件),然后属性
  2. 转到安全选项卡
  3. 点击继续button
  4. 点击添加button
  5. 点击高级button
  6. 另一个窗口将显示,然后单击右侧的“查找”button。
  7. 在下面的字段中,点击最下方的“用户”。 点击OK。
  8. 点击您创build的权限“用户”,然后选中完整控制checkbox。

你走了 你现在有权限到你的数据库。

确保你有创build数据库的权限(如user2012810提到的)。

要么

看起来您的代码首先使用另一个(或默认)连接string。 你有没有设置你的上下文类的连接名称?

 public class YourContext : DbContext { public YourContext() : base("name=DefaultConnection") { } public DbSet<aaaa> Aaaas { get; set; } } 

尝试使用Code First(不使用数据库方法)创build数据库时遇到同样的问题。 问题是EF没有足够的权限为您创build数据库。

所以我使用Code First(使用现有的数据库方法)工作。

脚步 :

  1. 在Sql server management studio中创build一个数据库(最好没有表格)。
  2. 现在回到Visual Studio,在服务器资源pipe理器中添加新build数据库的连接。
  3. 现在使用数据库的连接string,并将其添加到名为“Default Connection”的app.config中。
  4. 现在在Context类中,为它创build一个构造函数并从基类中扩展它,并将连接string的名称作为parameter passing。 就像,

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

5.现在运行你的代码,并看到表中添加到提供的数据库。

我有同样的问题。 这对我有用:

  1. 转到SQL Server Management Studio并以pipe理员身份运行它。
  2. select安全 – >然后login
  3. select用户名或任何用户将访问您的数据库在login和双击它。
  4. 给他们一个服务器angular色,将给他们创build数据库的凭据。 在我的情况下,公众已经被检查,所以我检查了dbcreatorsysadmin
  5. 在Package Manager控制台上再次运行update-database。 数据库现在应该成功创build。

这里是一张图片,以便您可以获得更大的图片,当然,我模糊了我的凭据: 在这里输入图像说明

以pipe理员身份运行Visual Studio,它为我工作

我用我的方式解决了这个问题。 以这种方式尝试连接string:

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

记得从主设置默认数据库到MFC(在你的情况,aspnet-test-2012615153521)。

如果解决scheme中有多个项目,并且将错误的项目设置为启动项目,也会发生此错误。

这很重要,因为Update-Database使用的连接string来自启动项目,而不是在包pipe理器控制台中select的“默认项目”。

(学分到masoud )

如错误所示,SQLlogin没有创build数据库的权限。 权限是在login具有所需angular色时授予的。 具有创build,修改和删除数据库权限的angular色是dbCreator 。 所以应该joinlogin才能解决问题。 可以在SQL Management Studio上右键单击该用户,然后转至“属性”>“服务器angular色”。 我遇到了同样的错误,并通过这样做来解决它。

我将添加我不得不做的,因为它是上述的合并。 我使用Code First,尝试使用“create-database”,但在标题中出现错误。 closures并重新打开(作为pipe理员这一次) – 命令不能识别,但'更新数据库'是这样使用的。 同样的错误。

以下是我解决它的步骤:

1)打开SQL Server Management Studio并创build一个数据库“video”

2)在VS2013中打开服务器资源pipe理器(在“查看”下)并连接到数据库。

3)右键单击连接 – >属性,并抓住连接string。

4)在web.config中我添加了连接string

  <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)在Package Manager控制台中运行“update-database”来创build表格。

记住,在Configuration.cs中创build时可以使用Seed()来插入值:

  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(); } 

检查连接string是否在您的Web.Config中。 我删除了该节点,并把它放在我的Web.Debug.config,这是我收到的错误。 把它移回到Web.config并且工作得很好。

以pipe理员身份运行Visual Studio,并在连接string中放入您的SQL SERVER身份validationlogin名(拥有创build数据库的权限)和密码,它对我有用

我没有certificate我的解决scheme,只是假设。

在我的情况下,它是由连接string中的域名引起的。 我有一个假设,如果DNS服务器不可用,它不能连接到数据库,因此entity framework试图创build此数据库。 但是这个许可被拒绝了,这是正确的。

如果您在IIS下运行该站点,则可能需要将“应用程序池的标识”设置为pipe理员。

解决这个问题就像吃一块蛋糕一样简单。当你的用户凭证发生变化,SQL服务器无法识别你时,这个问题通常会出现。不需要卸载现有的SQL服务器实例。你可以简单地安装一个新的带有新实例名称的实例。 假设你的最后一个实例名称是“Sqlexpress”,所以这次在安装过程中,将你的实例命名为“Sqlexpress1”。 另外不要忘记在安装过程中select混合模式(即Sql Serverauthentication和Windowsauthentication),并提供一个系统pipe理员密码,如果将来出现这样的问题,这将是非常方便的。 这个解决scheme肯定会解决这个问题。 谢谢..

Interesting Posts