いくつかのストアド プロシージャの DDL 定義、テーブル、トリガー、ビューなどのステートメントの変更を含む .sql ファイルがあります。
次のようなステートメントを含めることができます。
- プロシージャの作成 / プロシージャの作成
- ALTER PROC / ALTER PROCEDURE
- DROP PROC / DROP PROCEDURE
- テーブル/トリガー/ビューの作成
- テーブル/トリガー/ビューの変更
- ドロップ テーブル/トリガー/ビュー
- 等
.sql ファイルを解析し、オブジェクトのリスト (Proc/Table/View 名) とそれらに対して実行されているアクション (ALTER/CREATE/DROP) を取得する最良の方法は何ですか? Microsoft.Data.Schema.ScriptDom や ANTLR などのパーサーを使用する代わりに、RegEx を使用するのが最も簡単な方法だと考えています。しかし、すべてのシナリオをカバーするどの種類の RegEx を作成すればよいかわかりません。
これまでのところ、この式は上記のすべてのルールに一致することができます。しかし、その前にあるオブジェクトの名前を取得するにはどうすればよいですか。例えば。一致する
(create|alter|drop)\s+(procedure|proc|table|trigger|view|function|constraint)
私の質問は、AdvisorGroups という名前を取得する方法です。[dbo] を持つ可能性があるため、私の RegEx も不完全です。その前かどうか。Alter table AdvisorGroups の可能性もあります。すべての可能性を考慮しようとしているわけではありません。最低限のことだけ。
ALTER TABLE [dbo].[AdvisorGroups] 制約を追加 [XXX]
-前もって感謝します