0

このコードを約 2 年間使用して、2008 r2 バックアップを 2008 r2 に復元しましたが、毎回機能します。現在、同じコードを使用して 2008 r2 バックアップから 2012 localdb に復元しようとしていますが、毎回失敗します。エラーメッセージは以下です。復元が失敗するだけでなく、現在のデータベースが「復元保留」状態のままになり、使用できなくなります。私は c# を使用していますが、これはすべて、ユーザーや DBA の関与なしにプログラムで行う必要があります。このことを元に戻すのを手伝ってくれませんか?

        using(var connection = new SqlConnection(connectionString))
        {
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = String.Format("Alter Database {0} SET SINGLE_USER With ROLLBACK IMMEDIATE", dbName);
            cmd.CommandType = CommandType.Text;
            cmd.Connection = connection;
            connection.Open();
            cmd.ExecuteNonQuery();

            SqlCommand cmd2 = new SqlCommand();
            cmd2.CommandText = String.Format(@"RESTORE DATABASE {0} FROM DISK = '{1}'", dbName, backupFilePath);
            cmd2.CommandType = CommandType.Text;
            cmd2.Connection = connection;
            cmd2.ExecuteNonQuery();
        }

System.Data.SqlClient.SqlException (0x80131904): 論理データベース ファイル 'MyData_log' が見つかりません。ファイルのフル パスを指定します。RESTORE でデータベース 'MyData' を開始できませんでした。RESTORE DATABASE が異常終了しています。

編集:1行をに変更

            cmd2.CommandText = String.Format(@"RESTORE DATABASE {0} FROM DISK = '{1}' WITH  FILE = 1, NOUNLOAD, REPLACE, STATS = 5", dbName, backupFilePath);

これまでのところ、違いはありません。

4

1 に答える 1