まず、私はDBAではないため、SQL Serverの経験はありません。SQL Server Management Studioでsetvarを使用してスペース文字をエスケープする
私はSQL Server 2008 R2を実行しており、非分割、双方向、トランザクションレプリケーションを設定するProof Of Conceptスクリプトを作成しようとしています。私はMSのサイトから作業スクリプトを微調整することができました。今私はそれをニーズに合わせてカスタマイズしようとしています。これは、値の束を変数に引き出すことを含む。
私はSSMSを "SQLCMDモード"に設定していますが、すべての変数は大文字と小文字を区別して解析します。
:setvar ReplicationDirectory 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2\MSSQL\repldata';
これは私にエラーを与える:
A fatal scripting error occurred. Incorrect syntax was encountered while parsing :setvar
私は、変数の値にスペースが存在するために私の問題を絞られています。私が読んできたことによると、これは問題なく動作するはずです。私は単一引用符をダブルス(通常のバラエティと斜めの種類の両方)で置き換えようとしましたが、すべて同じエラーが出ます。
どのように私はスペース文字をエスケープする必要があります私に教えてWeb上に何かを見つけることができません。私が見てきたすべての記事では、文字列が引用符で囲まれていると、SSMSは空白に関係なく、それらのペアの間にある文字列を単一の文字列として解釈すると言います。
誰にもアイデアはありますか?
:setvar ReplicationDirectory 'C:\Progra~1\Micros~1\MSSQL10_50.SQL2\MSSQL\repldata';
しかし、私はむしろ、解決したい:
私は私がする変数の値を変更することができると思います「なぜ私はスペースを使用できないのですか?」代わりに問題。
多くのありがとうございます。
トム
私は数時間前に別の答えにコメントを投稿しましたが、消えてしまったようです。二重引用符を使用すると、(スペースを削除しても)同じエラーになります。一重引用符と二重引用符を使用すると、同じエラーが発生します。あなたが持っていることを示唆している記事を見たことがあります。サンプルを自分のコードにコピーアンドペーストしても、このエラーが発生します。 – Tom
@Tom - これらの例はどちらも、SQL 2008の開発者と標準、SP1とSP2、64bitで動作します。 setvarの割り当てだけで、他のコマンドは使用しないでスクリプトにエラーが出ますか? –
ありがとうございます。パスのスペースが私を吹き飛ばしていました。 – MikeMalter