2017-02-23 6 views
0

が、私は自分のアプリケーションがデータベースをエクスポートして、再度 を、それをインポートできるようにしたい「office.mdf」私はlocaldatabaseを持っている私が達成しようとしたそのバックアップのクエリを使用してインポートとエクスポートデータのMDFのSQLServer

DB.ExecuteNonQuery(@"BACKUP DATABASE [" + Directory.GetCurrentDirectory() + @"\office.mdf] TO DISK = N'" + distination + "'"); 

その後、私は、データベースをエクスポートし、私はデータベースを正常にインポートしたが、その後、私はもうデータベースに接続できませんでしたし、私が言うのメッセージを持って、私は私のプロジェクトをビルドし、私は別のデバイス上でそれを実行したクエリ

DB.ExecuteNonQuery(@"USE [master]; RESTORE DATABASE [" + Directory.GetCurrentDirectory() + @"\office.mdf] " + 
     @"FROM DISK = N'" + source + "' WITH FILE = 1 , NOUNLOAD, REPLACE, STATS = 10 , NORECOVERY , " + 
     @" MOVE 'office_log' TO '" + Directory.GetCurrentDirectory() + @"\office_log.ldf'" + 
     @" MOVE 'office' TO '" + Directory.GetCurrentDirectory() + @"\office.mdf'"); 

を復元

Login failed for user "myuser" 

ので、まず最初に、どのように私はこの問題 を解決することができ、その後どのようなデータベースをエクスポートして(私はときにエクスポートして、既存のデータベースをマージすることができますどのように他のデバイス から戻ってそれをインポートするための最良のアプローチでありますしたがって、既存のデータは失われません)

+0

ログインエラーを修正するには、 'sp_change_users_login'を使用してください。 http://stackoverflow.com/questions/15944123/sql-server-back-restore-login-failed –

+0

ありがとうございましたが、動作しませんでした –

答えて

1

SQL Serverでは、ユーザーデータベースがインスタンスデータベースに格納され、ユーザーは各ユーザーデータベースに格納され、ログインにマップされます。

データベースへのアクセスに使用しようとしているログインが宛先サーバー上に存在しないか、SIDが一致しない(通常はsp_change_users_loginで修正される)ようです。

1つのオプションは、CREATE LOGIN ... WITH SIDを使用し、このデータベースを復元するすべてのサーバーで同じSIDを使用することです。

+0

私はこの問題を避けるためにSIDで検索していたと思います。あまりにも多くのUに感謝 –

+0

これはありましたか?あなたの質問に答えますか? –

+0

それは有用ですが、残念なことに、主な問題は、データベース間でデータをエクスポートしてインポートするためです。 –

関連する問題