11

シンプルな ASP.NET MVC アプリケーションをステージング サーバーにデプロイしていますが、EntityFramework が既存のデータベースを移行しようとすると、次のエラーが発生します。

CREATE DATABASE permission denied in database 'master'. 

状況は次のとおりです。

  • 移行が実行されるのはこれが初めてです。
  • データベースは既に存在します (実際には Umbraco データベースです)。

次のメソッド (EntityFramework から) は、明らかに true を返す必要があるのに、false を返すように見えます。

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'これは、ユーザーが DB のリストをクエリする権限を持っていることを前提としています。このクエリが失敗した場合、EF は DB が作成されていないと判断し、再度作成を試みます。

確認 - 移行を実行しているユーザーが上記のクエリを正常に実行できること

于 2015-07-07T23:24:26.563 に答える