2

スキーマを変更Schemaするたびに行われた変更をログに記録する方法はありますか?Table

私はここでDDLトリガーに関する記事を読んでいました。ただし、テーブルのスキーマに加えられた特定の変更については説明していません。

4

3 に答える 3

1

この問題については、おそらくEvent Notificationsを使用します。私の意見では、DDLトリガーはテーブルに加えられた特定の変更について伝えますが、トリガー定義だけです:

Create Trigger tr_DDLNotikums
    On DataBase
For **DDL_DATABASE_LEVEL_EVENTS** 
于 2012-06-02T11:39:28.257 に答える
1

SSMSでは実際にテーブルが実際に削除され、バックグラウンドで再構築されることが非常に多いため、これは非常に困難です(スキーマ変更の複雑さと、「テーブルの再作成が必要な変更の保存を防止する」を有効にするかどうかによって異なります)オプション) - さまざまな種類の変更をすべてログに記録するのは悪夢です。(制約が削除され、再作成されるだけです-結合されたテーブルの列を再配置するだけで、一括再挿入、名前変更など)

スキーマの変更を追跡することに真剣に取り組んでいる場合は、スキーマのスクリプトを作成し (MSSMS のスクリプト生成オプションを使用)、結果のファイルを SVN / SourceSafe / TFS にチェックインし、それらのシステムで利用可能な多くの比較ツールを使用することを強くお勧めします。

または、Red Gates SQL Source Control など、これらすべてを行うサード パーティ製品を使用することもできます。

http://www.red-gate.com/products/sql-development/sql-source-control/

編集: これは便利だと思うかもしれません - Service Broker (SQL 2005+) と SSB キューを利用します:

http://www.mssqltips.com/sqlservertip/2121/event-notifications-in-sql-server-for-tracking-changes/

于 2012-05-15T12:23:48.880 に答える
0

以下の形式で DDL トリガーを使用する

 CREATE TRIGGER tr_DDL_Database ON DATABASE 
 FOR DDL_SCHEMA_EVENTS
 AS Begin
   Insert Into LogTable (XmlColumn)
   SELECT EVENTDATA()
 End
于 2012-05-21T23:06:31.310 に答える