1

BACKUPステートメントを使用している場合:

BACKUP DATABASE [Database name]
TO DISK = ‘Location’
WITH INIT, NOSKIP, NOFORMAT

バックアップは機能しました。しかし、次のようなストアドプロシージャで同じクエリを使用しようとしている場合

SET @SQLCMD = N'BACKUP DATABASE [Database Name] TO DISK = ''' + @FILENAME + ''' WITH INIT,NOSKIP, NOFORMAT' 

EXEC (@SQLCMD)

エラーメッセージが表示されます:

メッセージ203、レベル16、状態2、プロシージャsp_BackupDatabase、行31
名前'BACKUP DATABASE [Database Name] TO DISK ='C:\ Users \ PC \ Desktop \ Backup \ 20121008 \ db.bak'WITH INIT、NOSKIP、NOFORMAT 'は有効な識別子ではありません。

どこでエラーが発生しているのかわかりませんでした。

4

1 に答える 1

1

あなたがしていることは、コマンドをストアドプロシージャとして実行しますが、もちろん、それはストアドプロシージャの名前の有効な識別子ではありません!したがって、"sp_executesql"代わりに使用することをお勧めします。コードが正常に機能する場合は、他のすべての場所で機能するはずです。

http://msdn.microsoft.com/en-us/library/ms175170(v=sql.105).aspxを参照する

このコードのように:

Declare @Command    Nvarchar(500);

Select  @Command    =   N'BACKUP DATABASE [Database Name] TO DISK = ''' + @FILENAME + ''' WITH INIT,NOSKIP, NOFORMAT';

Execute sp_executesql   @Command

乾杯

于 2012-10-08T21:58:43.280 に答える