私は今、多くのスレッドをチェックしており、これに対する答えを見つけることができないと思われます。クライアントに返信する前にこれを前提にしていると確信する必要があります。SQL Serverはストアドプロシージャを実行する前にそれを検証しますか?
so、見出しの状態としてSQL Serverはストアドプロシージャを実行する前に検証しますか?
IE:私は特定の条件を満たしていることは決してありませんIF statement
を持っている場合でも、そのIF statement condition
のコードがチェックされ、実行前に検証されますか?
EDIT:はここに簡単な例です:
DECLARE @ParamSource VARCHAR(2) = 'V3'
IF @ParamSource = 'V1'
BEGIN
--USE LINKED SERVER HERE WHICH THROWS AN ERROR ABOUT CONNECTIONS
END
IF @ParamSource = 'V3'
BEGIN
--DO MY ACTUAL CODE
END
私はその最初の条件を満たしていることはありませんが、何らかの理由で、私のストアドプロシージャは、実行時に検証しようとしているとerroringを保持しています。
これらは、最初にビルドされたときに(少なくとも部分的に)検証されますが、実行時には検証されません。ただし、これは決して検証されない動的SQLでは当てはまりません。これは個人的な経験から来たものであり、いかなる文書からでもありません。ただし、この理論をテストしたい場合は、テストテーブルに対して単純なストアドプロシージャを構築し、テストテーブルから列を削除することができます。ストアドプロシージャは実行を試みますが、エラーをスローします。 – user2366842
@ user2366842-返信ありがとうございます...私がその行に沿って何かを検証したり何かをしていると思うのは、私が「災害復旧環境」をセットアップする過程にあり、IF文の1つがリンクされたどのような理由で接続することはできません(ただし、この条件を満たす必要はありません。私はこのコードを削除できますが、これはSQLが実行しているかどうかを知りたがっています) – Mike
遅延名解決とコンパイル:https: //technet.microsoft.com/en-us/library/ms190686(v=sql.105).aspx(リンクが更新されました) – Pred