26

私のニーズを満たす SQL diff ツールが見つからないため、独自のツールを作成しています。INFORMATION_SCHEMA テーブルと sys テーブルの間に、ほぼ完全な作業バージョンがあります。しかし、メタデータで見つからないものの 1 つは、トリガーの定義です。つまり、実際の SQL コードです。私は何かを見落としていますか?

ありがとう。


ありがとう、ピート、私はそれについて知りませんでした!

スコット、私は DB へのリモート接続を許可しない非常に基本的なホスティング パッケージを使用しています。RedGate の仕様 (とにかく余裕がありません) から、それらがその回避策を提供しているかどうかはわかりません。API も存在しますが (Apex のものなど)、私は見ませんでした私の側でより多くのプログラミングを必要とするソリューションに投資するポイント。:)

私の解決策は、一種の「スキーマ サービス」として機能する ASPX ページをサイトにドロップし、収集したメタデータを XML として返すことです。任意の数のカタログ インスタンスをマスターと比較し、差分を表示する小さな AJAX アプリをセットアップしました。完璧ではありませんが、私にとって大きな前進です。

再度、感謝します!

4

6 に答える 6

26

sp_helptext は、トリガーを構成する SQL を取得するために機能します。

syscomments ビューのテキスト列には、オブジェクトの作成に使用される sql も含まれています。

于 2008-09-04T15:50:34.193 に答える
18
SELECT     
    DB_NAME() AS DataBaseName,                  
    dbo.SysObjects.Name AS TriggerName,
    dbo.sysComments.Text AS SqlContent
FROM 
    dbo.SysObjects INNER JOIN 
        dbo.sysComments ON 
        dbo.SysObjects.ID = dbo.sysComments.ID
WHERE   
    (dbo.SysObjects.xType = 'TR') 
    AND 
    dbo.SysObjects.Name = '<YourTriggerName>'
于 2015-02-03T17:45:53.847 に答える
17

2005 および 2008 では、 OBJECT_DEFINITION()関数を使用できます。

于 2008-09-04T15:53:57.210 に答える