スキーマを変更Schema
するたびに行われた変更をログに記録する方法はありますか?Table
私はここでDDLトリガーに関する記事を読んでいました。ただし、テーブルのスキーマに加えられた特定の変更については説明していません。
スキーマを変更Schema
するたびに行われた変更をログに記録する方法はありますか?Table
私はここでDDLトリガーに関する記事を読んでいました。ただし、テーブルのスキーマに加えられた特定の変更については説明していません。
この問題については、おそらくEvent Notificationsを使用します。私の意見では、DDLトリガーはテーブルに加えられた特定の変更について伝えますが、トリガー定義だけです:
Create Trigger tr_DDLNotikums
On DataBase
For **DDL_DATABASE_LEVEL_EVENTS**
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/
以下の形式で DDL トリガーを使用する
CREATE TRIGGER tr_DDL_Database ON DATABASE
FOR DDL_SCHEMA_EVENTS
AS Begin
Insert Into LogTable (XmlColumn)
SELECT EVENTDATA()
End