テーブルや列の名前を変更し、その他の複雑なロジックを持つデータポート スクリプトを作成することがあります。これらの古い列またはテーブルを参照する IF ステートメントにも SQL があります。IF ステートメントを使用して、SQL スクリプトを複数実行しやすいようにするための標準があります。
ただし、場合によっては、if ステートメントが false と評価されても、ブロックにラップされたコードでエラーが発生することがあります。これは、構文チェックが原因であると推測されます。
if 1 = 0
begin
select * from mydatabase.dbo.mytable; -- doesn't execute, but still errors because doesn't exist
end
もう1つの奇妙なことは、常に一貫しているわけではなく、うまく機能することもあります。
スクリプトごとにこれらの種類のチェックを無効にする方法があるかどうかは誰にもわかりません。
ありがとう
ノート
同様の状況を試してみたが、エラーは発生しなかったと人々が言うことは知っています。最初はSSMSではエラーになりませんでしたが、SQLCMDではエラーになりました。
sqlcmd MyTestScript.sql -r 1 -U user -P password
次に、SSMS を SQLCMD モード Query -> CMDMODE に配置しましたが、それでもエラーは発生しませんでした。その後、数回再実行した後、両方でエラーが発生し始めました。