11

我们正在将一个简单的 ASP.NET MVC 应用程序部署到我们的登台服务器上,当 EntityFramework 尝试迁移现有数据库时,我们收到以下错误。

CREATE DATABASE permission denied in database 'master'. 

情况如下:

  • 这是迁移第一次运行。
  • 该数据库已经存在(它实际上是一个 Umbraco 数据库)。

看起来以下方法(来自 EntityFramework)返回 false,而它显然应该返回 true:

System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists() 

数据库初始化程序具有以下代码:

Database.SetInitializer(new MigrateDatabaseToLatestVersion<DataContext, Configuration>());

自动迁移已关闭,因为我们使用的是基于代码的迁移。

连接字符串指向正确的数据库,并且用户对该数据库具有 db_owner 权限。用户对服务器上的其他表没有权限。

这是个常见的问题吗?有谁知道这个的解决方案?

谢谢!

4

1 回答 1

3

确保数据库存在 - 执行以下脚本

IF db_id(N'MyDatabaseName') IS NOT NULL SELECT 1 ELSE SELECT Count(*) FROM sys.databases WHERE [name]=N'MyDatabaseName'

假设用户有权查询'sys.databases'数据库列表。如果此查询失败 - EF 认为尚未创建 DB 并尝试再次创建它。

确保 - 执行迁移的用户能够成功执行上述查询

于 2015-07-07T23:24:26.563 回答