web-dev-qa-db-ja.com

sqlcmd -qおよび引用符の問題

SQL Server 2008 R2 Expressエディションを持っています。これはExpressエディションにすぎないため、タスクを自動化するためのSQL Serverエージェントはありません。

だから私はコマンドラインプログラムsqlcmdで何かをしようとしました。

私はこのコマンドを実行しようとします:

use DB; EXEC sp_MSforeachtable @command1="print '?' DBCC DBREINDEX ('?', ' ', 80)";

SQL Server Management Studioでこれを行うと、すべてが正常に動作します。しかし、sqlcmdを介してこれを実行しようとすると、機能しません。

sqlcmd -S .\INSTANCE -Q "use DB; EXEC sp_MSforeachtable @command1="print '?' DBCC DBREINDEX ('?', ' ', 80)";" -o C:\FOLDER\LOG_DB_REINDEX.txt

これは引用符のせいだと思います。私も `と 'を使おうとしましたが、うまくいきませんでした...

この問題を解決するにはどうすればよいですか?

3
frupfrup

これを使ってみてください。 ;-)

use DB; EXEC sp_MSforeachtable @command1=N'print ''?'' DBCC DBREINDEX (''?'', '' '', 80) ';

二重引用符は、次の引用符をエスケープします。

以下はsqlcmdの例です。

sqlcmd -S YOURSERVER -Q "use net_temp_test; EXEC sp_MSforeachtable @command1=N'print ''?''';"
4
Ionic