ストアドプロシージャの数が非常に多いデータベースがあります。ストアドプロシージャレベルでトランザクションを開始していないストアドプロシージャの数があります。SQL Serverがストアドプロシージャ内にSQL文を格納する方法
今、これらのストアドプロシージャのトランザクションを自動化したいと思います。現在、PowerShellを使用しています。
しかし、たとえば条件
をコミット/問題は、私は、ストアドプロシージャの定義を取得することができますですが、私は、私はいくつかのトランザクションのロールバックを書くことができるように、ストアドプロシージャ内の個々のSQL文を取得することはできませんよ上記のトランザクションが失敗する@@errorcount <> 0 then rollback
これを達成する方法を教えてもらえますか、そうする方法はありますか?私は(ストアドプロシージャ内にある)SQL文を分割することができる場合、私は、ストアドプロシージャ
を操作するためのPowerShellでいくつかのログインを書くことができ、彼らがテキストとして保存されている事前
これは本当に悪い考えです。私はこれをプログラムではしません。これらのステートメントを配置する適切な場所を決定できるロジックをコーディングすることは非常に困難です。さて、最も安全な賭けは、Visual Studioのクエリパーサエンジンに結びつけ、プロシージャコードを解析し、それを別々のステートメントに分割することです。 –
また、データベースから保存されたprocコードをどのように抽出する必要がありますか?あなたはソースコード管理システムを使用していませんか? –
多くのBEGIN TRAN-COMMIT TRANロジックをprocsに追加すると、より多くのブロッキングが発生し、コマンドタイムアウトやデッドロックが頻繁に発生する可能性があります。 COMMITがどこかに残されていれば、トランザクションは何らかの方法で(おそらく強制的に)閉じられ、実行された作業が破棄されて失われるまで、トランザクションは開いたままで決してコミットされません。あなたがプログラマチックに新しい「定型句」のCRUD手続きを作成していたら、それは一つのことですが、私は3番目(4番目)の投票に入れなければなりません。これはあなたのベストアイデアではありません。 –