注1:私はこれまでの私の研究で見てきたものを、そこに私が何を探しているものを達成する方法はありませんが、私は私が間違っている願っていますから...条件付きトリガー:CONNECTステートメントSQL
注2:これの目標は、私は、ID番号に基づいて情報を検索する(SSMSで)SQLスクリプトを書いています別のデータベースに
をクエリとの間の接続を変更する必要性を排除することです。このクエリが実行できるデータベースは2つ(テスト用DBと本番用DB)です。 ID番号は、テストDBまたはプロダクションに含まれますが、両方ではありません。私がしたいのは、:CONNECTステートメントをSQLCMDモード(または別の方法ですが、まだ見つけていません)を使って適切なDBに接続することです。
:CONNECT /*Testing database name*/
IF NOT EXISTS (SELECT * FROM /*appropriate table*/ WHERE ID = @ID)
:CONNECT /*Production database name*/
/*Continue with the rest of the query*/
理論上、上記のコードは、私が正しいIDに存在すると仮定して正しいDBに接続していることを保証します。しかし、何が起こっても、第2:CONNECTステートメントはIF EXISTSに関係なくアクティブになり、その結果、プロダクションに対して常にクエリが実行されます。
この目標を達成する方法はありますか?前もって感謝します!
'IF NOT EXISTS'がT-SQLステートメントであり、':CONNECT'がSQLCMDステートメントであるため、これは機能しません。これらは無関係です:SQLCMDはSSMSパーサーによって実行され、T-SQLはデータベースによって実行されます。 SQLCMDには条件付きロジックがないため、SQLCMDスクリプトで実行しようとしていることを実行することはできません。データベースが同じインスタンスにある場合は、 ':CONNECT'の代わりに' USE'(T-SQLコマンド)を使用してください。彼らが異なるインスタンスにいる場合、あなたはSSMSからこれを行うことはできません。適切なパラメータで外部的に 'sqlcmd'を呼び出さなければなりません。 –