LocalDbからSQL Server Expressに移行すると奇妙なエラーが発生します。これはエラーです:ASP.NET MVC 4 EF6がSQL Server Expressデータベースに接続できません
This operation requires a connection to the 'master' database. Unable to create a connection to the 'master' database because the original database connection has been opened and credentials have been removed from the connection string. Supply an unopened connection.
私は、コンテキストの初期化にCreateDatabaseIfNotExists
しようとしたときに、このエラーが発生します。ここで
は私の接続文字列である:ここで
<add name="DefaultConnection"
connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=AlvinCMS;MultipleActiveResultSets=True;"
providerName="System.Data.SqlClient" />
は私のコンテキストです:
public class AlvinCMSMigrationDBContext : DbContext
{
public AlvinCMSMigrationDBContext() : base("DefaultConnection")
{
Database.SetInitializer<AlvinCMSMigrationDBContext>(new CreateDatabaseIfNotExists<AlvinCMSMigrationDBContext>());
}
私はglobal.asax
上のデータベースを開始:
protected void Application_Start()
{
//Check And Init Database
Alvin_CMS.App_Start.DatabaseConfig.Initialize();
をそして最後に、これは私の初期化ですコード:
public static void Initialize()
{
Alvin_CMS.Models.AlvinCMSMigrationDBContext migrationDB = new Models.AlvinCMSMigrationDBContext();
try
{
if (!migrationDB.Database.Exists())
{
migrationDB.Database.Initialize(false); //ERROR HERE!
AlvinCMSExtension.Models.AccountDBContext accountDB = new AlvinCMSExtension.Models.AccountDBContext();
accountDB.Database.Initialize(false);
SetDefaultValue(migrationDB);
}
migrationDB.Database.Initialize(false);
}
catch (Exception e)
{
migrationDB.Database.Delete();
AlvinCMSExtension.Helper.Log(e);
}
}
私はLocalDbを使用すると問題がなかったので、私のコードに何が問題なのか分かりませんが、今はデータベースに接続できません。ここで
は、この問題を修正する私の試みです:
私は
Persist Security Info = True;Trusted_Connection=False;
を入れて - まだ同じエラーを生成します。- 私は
Database.SetInitializer<AlvinCMSMigrationDBContext>(null);
を変更しようとしました。しかし、私は存在していない場合は、データベースを作成する必要があり、これは、以下のようにあなたがconnection string
使用することができ、私
あなたが接続に使用しているユーザーが管理者権限を持っている、以下の役割がのdbcreatorおよびシステム管理者とそれが存在しない場合は、データベースを作成することができさえヌルの初期化子で – Monah
を試してみてください、このユーザーを割り当てるようにしてください。 Trusted_Connection = Falseは接続文字列から資格情報を削除しませんが、正しいものを指定しなかった可能性が高いので、Trusted_Connection = Trueを使用してみてください.Windows認証が使用されます。 – DevilSuichiro