データベースAがあります。A.bakと呼ばれるデータベースAのバックアップを取りました。新しいデータベースBを作成しました。今、右クリックしてA.bakからBを復元します。復元ダイアログで、既存のデータベースを上書きし、LogicalFileNameをC:\Program Files\Microsoft SQL Server\MSSQL11.SQLSERVER2012\MSSQL\DATA\A.mdf
からC:\Program Files\Microsoft SQL Server\MSSQL11.SQLSERVER2012\MSSQL\DATA\B.mdf
そして、ldfファイルでも同じことをしました。しかし、私は得ています
Exclusive access could not be obtained because the database is in use
。
また、試してみました、
ALTER DATABASE [B] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
また、sp_who2、[B]の既存の接続はありませんでした
排他的アクセスを取得しようとする原因は、SQL Server 2012 Management Studioの復元ダイアログのオプションページにあります。末尾ログをオンにして、SOURCEデータベースの状態オプションを復元します。そのため、このアクションを実行するために、ソースデータベース(この場合はA)への排他的アクセスを試みます。ログの末尾オプションをオフにすると、操作がよりスムーズに機能することがわかります。
答えは非常に簡単でしたが、
このコマンドを実行してLogicalNamesを取得し、
RESTORE FILELISTONLY FROM DISK = 'C:\Users\MyUSer\Desktop\A.bak'
次に、以下にLogicalNameを入れるだけで、
RESTORE DATABASE B
FROM DISK = 'C:\Users\MyUSer\Desktop\A.bak'
WITH
MOVE 'LogicalName' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLSERVER2012\MSSQL\Data\B.mdf',
MOVE 'LogicalName_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLSERVER2012\MSSQL\Data\B.ldf'
GO
パスの変更が必要になる場合があることに注意してください。便利なリンク、
B. [データベースの復元]ダイアログが[全般]ページに表示されます1.復元するデータベースの名前が[データベースへ]リストボックスに表示されます。新しいデータベースを作成するには、リストボックスにその名前を入力します。
「デバイスから」を選択します
ボタンをクリックして、「バックアップの指定」ダイアログを表示します
[追加]をクリックしてディレクトリから.bakファイルを参照し、[OK]をクリックします