2017-10-10 5 views
0

bakファイルとLiteスピードのストアドプロシージャを使用してSQL Server 2008 R2のデータベースを復元したいとします。以下は私のコードです:パラメータにネストされた文字列を含むストアドプロシージャを呼び出すときの構文エラー

USE Master 
Go 
exec master.dbo.XP_RESTORE_DATABASE 
@database="abc" 
,@filename='M:\BACKUPS\xyz.bak' 
,@WITH= 'REPLACE' 
,@WITH= 'MOVE' "abc_DATA" TO "H:\SQLDATA\ABC.mdf"' 
,@WITH= 'MOVE' "abc_LOG" TO "H:\SQLDATA\ABC.ldf"' 
GO 

私はエラーの下に持って上記のクエリを実行した後:

不正な構文は、近く「abc_DATA」。

私はいつもデータベースを復元するためにこのクエリを使用したので、私はこのエラーが発生しているのか分かりません。

+0

これは正しく表示されません - そこに '''文字の不均衡があります。速い捜索では、 '' MOVE'の直後に ''が存在してはならないことが示唆されています。 –

+0

RESTOREコマンドを使用していないのはなぜですか? –

+0

'xp_restore_database'はSQL Serverのプロシージャではありません。 Litespeed製品の一部です。 –

答えて

1

これは動作するはずです:

RESTORE DATABASE [abc] 
FROM DISK = [DiskLocation] 
WITH MOVE 'abc_data' TO ' H:\SQLDATA\ABC.mdf' 
,MOVE 'abc_log' TO 'H:\SQLDATA\ABC.ldf' 
+1

バックアップを管理するために別の製品を使用しているようです。圧縮している可能性があります。ネイティブの 'RESTORE'コマンドがバックアップファイルの内容を理解することはほとんどありません。 –

+0

ダミアンを指摘してくれてありがとう、私は当初認識していなかった。 –

0

XP_RESTORE_DATABASEは、SQL Serverの手順ではありません。これはQuestのLiteSpeed製品の一部です。 xp_restore_databaseのドキュメントはhere

です。次に、何が問題なのかを説明するメッセージです。呼び出しが正しくありません。 @WITHパラメータに渡される文字列値は、MOVEの直後で終了し、その後にオブジェクト識別子"abc_DATA"が続きます。

コールは次のようになります。

exec master.dbo.XP_RESTORE_DATABASE @database="abc", @filename='M:\BACKUPS\xyz.bak' 
     ,@WITH= 'REPLACE' 
     ,@WITH= 'MOVE "abc_DATA" TO "H:\SQLDATA\ABC.mdf"' 
     ,@WITH= 'MOVE "abc_LOG" TO "H:\SQLDATA\ABC.ldf"' 

あなたはシンタックスカラーリングは今赤い文字列全体を塗ることに気づくでしょう。

関連する問題