5

別の SQL Server 2005 マシンからのデータベースのバックアップがあります。SQL Server 2008 インスタンスに復元しようとしています。

復元用の新しいデータベースを作成しましたが、次のように復元を試みると (ssms によって生成されます):

RESTORE DATABASE [WendyUAT] 
FROM DISK = N'D:\wanda20130503.bak' 
WITH FILE = 1,  
MOVE N'Wendy' TO N'D:\databases\\WendyUAT.mdf',  
MOVE N'Wendy_log' TO N'D:\databases\\WendyUAT.ldf',  
MOVE N'sysft_WendyFti' TO N'D:\databases\\WendyUAT.WendyFti',  
NOUNLOAD,  REPLACE,  STATS = 10

次のエラーが表示されます。

System.Data.SqlClient.SqlError: 'D:\databases\WendyUAT で 'RestoreContainer::ValidateTargetForCreation' を試行中に、オペレーティング システムがエラー '32 (別のプロセスで使用されているため、プロセスはファイルにアクセスできません)' を返しました.mdf'.

私が知る限り(Process Explorerなどを使用して)、ファイルを使用しているものは他にありません。Windows Defender でリアルタイム保護を無効にしました。Windowsエクスプローラーで問題なくファイルを削除できるため、SQL Serverがファイルが使用中であると考える理由を理解できないため、Windowsはファイルが使用中であるとは思わないようです。

どんな助けでもありがたく受け取られます。

4

4 に答える 4

10

このバックアップを実行する前に、アプリケーションで SQL Server にどのように接続していますか? どのデータベースに接続していますか?

データベースに接続して復元したいときに使用することはできません。たとえば、SMO 復元コードを実行する前に、他のデータベースを明示的に使用する必要があります。WendyUATmaster

すべての T-SQL 復元スクリプトには、常に次のものが含まれます。

USE [master]
GO 

RESTORE DATABASE [WendyUAT] ......

したがって、アプリからこのバックアップを実行する場合は、masterこの T-SQL 復元スクリプトを実行する前に、たとえば明示的に接続していることを確認してください。

アップデート:

これはあなたが意図的に行ったものですか、それともただのタイプミスでしょうか??

MOVE N'Wendy' TO N'D:\databases\\WendyUAT.mdf',  
                     *         **
                     *         *
                     *         *  two backslashes here  -why??? 
                     * only one backslash here...

単一のバックスラッシュのみを使用すると機能しますか??

RESTORE DATABASE [WendyUAT] 
FROM DISK = N'D:\wanda20130503.bak' 
WITH FILE = 1,  
MOVE N'Wendy' TO N'D:\databases\WendyUAT.mdf',  
MOVE N'Wendy_log' TO N'D:\databases\WendyUAT.ldf',  
MOVE N'sysft_WendyFti' TO N'D:\databases\WendyUAT.WendyFti',  
NOUNLOAD,  REPLACE,  STATS = 10
于 2013-05-04T10:55:35.803 に答える