web-dev-qa-db-ja.com

MS SQL Serverを介してディレクトリ上のファイルを削除する方法

次のクエリを使用して、Windows内のディレクトリからファイルを削除しようとしています。

exec xp_cmdshell 'del "C:\root\sfd_devtracker\'+@deletefile + '"';

このコマンドを実行すると、次のエラーが発生します。

Incorrect syntax near '+'.

@deletefile変数削除する必要があるファイル名を持っています。ここで何が間違っていますか?

xp_cmdshell では、リテラル文字列をパラメーターとして渡す必要があります。その場で値を構築することはできません。

これを試して:

DECLARE @cmd NVARCHAR(MAX) = 
'xp_cmdshell ''del "C:\root\sfd_devtracker\' + @deletefile + '"''';
EXEC (@cmd)

xp_cmdshellは、たとえば this way で有効にする必要があります。

13
Serge