USE DATABASE
ステートメントを持つスクリプトがあります。データベースが存在する場合、スクリプトは問題なく実行されます。存在しない場合は、「データベースが存在しません」というメッセージで失敗します。これは完全に理にかなっています。
さて、失敗しないように、DB が sys.databases に存在するかどうかを選択するチェックを追加しました (IF 1=2
簡単にするために、ここではチェックで表します)。したがって、DB が存在する場合 (1=1 )、「use」ステートメントを実行します。
驚いたことに、スクリプトは失敗し続けました。そこで、TRY CATCH ブロックを追加してみました。同じ結果です。use ステートメントが他の何よりも先に評価されるようです。これは、スクリプトが壊れる可能性があるため、非常に面倒です。
だから私の質問は、use
存在しない可能性のあるデータベースへのスクリプトでステートメントを作成するにはどうすればよいですか?
BEGIN TRY
IF (1=1) BEGIN --if DB exists
USE DB_THAT_MAY_NOT_EXIST
END
END TRY
BEGIN CATCH
END CATCH