1

ストアドプロシージャの数が非常に多いデータベースがあります。しかし、ストアドプロシージャレベルでトランザクションを開始していないストアドプロシージャがいくつかあります。

次に、これらのストアドプロシージャのトランザクションを自動化して配置します。現在、PowerShellを使用しています。

しかし、問題は、ストアドプロシージャの定義を取得できるのに、ストアドプロシージャ内の個々のSQLステートメントを取得できないため、トランザクションのロールバック/コミット条件を記述できることです。

たとえば、上記のトランザクションが失敗した場合@@errorcount <> 0 then rollback

誰かがこれを達成する方法を教えてもらえますか、それとも他の方法がありますか?SQLステートメント(ストアドプロシージャ内にある)を分割できる場合は、PowerShellでログインを記述して、ストアドプロシージャを操作できます。

助けてください

前もって感謝します

4

1 に答える 1

0

それらはテキストとして保存されるため、本文をステートメントとして検査または変更するには、パーサーが必要です。Visual Studio でも使用されているパーサー (および) を使用して、どこかで取得できる可能性があります。これは、Visual Studio のインストールで使用でき、再配布できます。私は現在、それらを使用して、特定の SQL スクリプトに「許可されていない」SQL ステートメントが含まれていないことを確認しています (もちろん、私自身のコンテキストでは許可されていません)。Microsoft.Data.Schema.ScriptDom.dllMicrosoft.Data.Schema.ScriptDom.Sql.dll

そうは言っても、これはおそらく見た目ほど簡単ではなく、自動的に行わない方がよいという@RobertLDavisのコメントに同意します。さらに、後ですべての変更を確認する必要があります。したがって、おそらく最初から手動で行うことができたでしょう。

于 2012-05-02T05:39:55.463 に答える