私は100以上のテーブルを持つデータベースを持っています。私は既存のテーブルにカラムを追加し続けています(必要な場合)。新しいテーブルもいくつか追加しました。データベースのアクティビティログMS SQL Server
ここ3ヶ月間に行った変更を確認したいと思います。 MS SQL Server 2012に特定のデータベースの変更履歴を記録するアクティビティログはありますか?
私は100以上のテーブルを持つデータベースを持っています。私は既存のテーブルにカラムを追加し続けています(必要な場合)。新しいテーブルもいくつか追加しました。データベースのアクティビティログMS SQL Server
ここ3ヶ月間に行った変更を確認したいと思います。 MS SQL Server 2012に特定のデータベースの変更履歴を記録するアクティビティログはありますか?
過去に行ったすべてのアクティビティを確認するには、MSSQL Auditを使用できます。いつでも変更を追跡するための最良の方法です。
あなたが監査を有効にしている1.If、あなたが追跡することができます。.. https://msdn.microsoft.com/en-us/library/cc280386.aspx
に投稿された方が良いでしょう。MSSQL Auditが有効かどうかはどのように分かりますか?またはこれは私にそれを有効にせずにすべてのレコードを与えるでしょう – user6594294
アクティビティを記録するように監査を有効にする必要があります。監査が有効でない場合、オブジェクトエクスプローラでチェックすることができます。 –
は、オブジェクトエクスプローラのセキュリティの下で新しい監査を作成し、有効にしました。私はそこにデモ・データベース、表を作成しました。新しく作成された監査を右クリックしてログを表示しましたが、1つのエントリを表示するだけのものはありませんでした。監査セッションの変更 – user6594294
は今、あなたのオプションは、限られているあなたは、彼らは今、あなたを助けるかどうかを確認するも、以下試すことができ、今後チェックしてください変更
は、確認するにはあなたが監査を有効にしている場合は、クエリの下に使用することができます。..
select * from sys.dm_server_audit_status
あなたが監査を有効にしていない場合は、この次、それを有効にすることができます:An Introduction to SQL Server Audit ..私はいないだろうしエナブをお勧めしますあなたの質問に記載されているもの以外のものをキャプチャする必要がない場合は、
2.Defaultトレースは作成されたテーブルもキャプチャしますが、スペースがいっぱいになると最後のファイルを上書きするために使用します。あなたが3ヶ月の範囲を求めているので)、これを試してみてください:What event information can I get by default from SQL Server?デフォルトトレースで提供されるすべてのものを知るには
私はこのオプションを使用して、それらをバックアップしますテーブルの変更を確認するだけでよいので、ロールアップのタイミングに応じてファイルを変更できます。
3.最終的に1つのオプションは、Tlogをクエリすることです。
select * from fn_dblog(null,null) where [transaction name]='CREATE TABLE'
上記TLOGオプションを使用すると、3カ月以上TLOGのバックアップを持っており、また、あなたはおそらくこれは、あなたが途中で取得することができ、それらを
私の場合は役に立たない – user6594294
を復元する必要がある場合にのみ機能します。 sys.objects
には作成日と変更日がありますが、残念ながらsys.columns
はありません。ただし、追加された最新の列はcolumn_idsの方が高くなります。私はあなたが簡単に削除された列を選ぶことができるだろうとは知らない。列の変更以外の変更は、変更日に反映されることに注意してください。
select s.name [schema], o.name [table], o.modify_date [table_modify_date], c.column_id, c.name
from sys.schemas s
join sys.objects o on o.schema_id = s.schema_id
left join sys.columns c on c.object_id = o.object_id
where o.type = 'U' --user tables only
and o.modify_date >= dateadd(M,-3, getdate())
order by s.name, o.name, column_id;
この監査を容易にするため、将来的にあなたがあなたの変更を管理するためにSSDTデータプロジェクトのようなものを使用する場合、テーブルまたはソースコントロール内のすべてのスキーマ変更をログに記録しますDDLトリガを作成することができます。
あなたはDDLトリガを使用することができます。
CREATE TRIGGER ColumnChanges
ON DATABASE
FOR ALTER_TABLE
AS
DECLARE @data XML
SET @data = EVENTDATA()
INSERT alter_table_log
(PostTime, DB_User, Event, TSQL)
VALUES
(GETDATE(),
CONVERT(nvarchar(100), CURRENT_USER),
@data.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)'),
@data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(2000)')) ;
GO
あなたはDB上の右クリックメニューからレポートを実行することができます。または、必要な情報だけでカスタムレポートを作成することもできます。
私のスキーマレポートは2011年9月3日にのみ戻っていますが、毎日多くの更新を含む60以上の列を持つ1000以上の表があります。あなたはさらに後退するかもしれません。
バックアップを3か月前に行っている場合は、バックアップを別の名前または別のサーバーに復元し、サードパーティのツール(Visual Studio、Devart Schema Compareなど)でスキーマ比較を実行できます。
それ以外の場合は、Gameiswarなどの説明のように必要になる前に先に設定することが唯一の方法です。
SQLソースコントロール? – ManOnAMission
@ManOnAMissionどのように? – user6594294
これはdba.stackexchange.com –