0

関数、テーブル インデックス、プロシージャの変更、列の追加または削除など、データベースで発生した変更を確認する方法。

このクエリでは

select * from sys.objects
where type IS NOT NULL
and modify_date between '2013-07-21' and '2013-07-29'  

しかし、ここでは作成されたオブジェクトのリストと変更リストを取得していますが、オブジェクトを削除すると何も表示されません。

特定の日付の間にデータベースで発生したすべての変更を取得するにはどうすればよいですか?

4

2 に答える 2

0

SQL のソース管理ソリューションを試してください。以前、RedGate の SQL ソース管理を使用したことがあり、このような変更の履歴が記録され、誰が変更を行い、何が変更されたかが記録されます。

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

少し高いですが、いいです。SQL自体だけでそれを行う方法(特に削除)があるかどうかはわかりません。

于 2013-07-30T14:27:29.240 に答える
0

これらのインシデントの多くは、デフォルト トレースに記録されます。

DECLARE @path NVARCHAR(260);

SELECT 
   @path = REVERSE(SUBSTRING(REVERSE([path]), 
   CHARINDEX(CHAR(92), REVERSE([path])), 260)) + N'log.trc'
FROM    sys.traces
WHERE   is_default = 1;

SELECT 
  LoginName,
  HostName,
  StartTime,
  ObjectName,
  TextData -- may or may not be populated
FROM sys.fn_trace_gettable(@path, DEFAULT)
WHERE EventClass IN
(
  164,  -- object:altered
  46,   -- object:created
  47    -- object:deleted
)
AND StartTime >= '20130721' AND StartTime < '20130730';

BETWEEN日付範囲クエリに使用しない理由

于 2013-07-30T14:37:39.897 に答える