トランザクションログで削除ステートメントを表示する


回答:


11

sqlで実行された正確なスクリプトを見つけることはできません。(トランザクションログで)

トランザクションログは、データベースに加えられたすべての変更に関する情報を含むファイルです。これには、データの変更(トランザクション)、データベースの変更、およびバックアップ/復元イベントが含まれます。

トランザクションログの主な目的は、必要なときにデータベースを特定の時点に復元できる方法を提供することです。これには、特定の時間までのトランザクションのロールバック、または完全バックアップ復元からのトランザクションのロールフォワードが含まれます。

トランザクションログの詳細 http://www.sqlservercentral.com/articles/Design+and+Theory/63350/

ここに、最近実行された削除クエリを表示するスクリプトがあります

SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query]
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
where dest.TEXT like '%Delete%from%'
ORDER BY deqs.last_execution_time DESC

FYI:FROMDELETEステートメント内のオプションのキーワードであるため、ここでは一致する述部には含めません。
ジョンセイゲル

削除ステートメントのFromはオプションです。クエリの結果を制限するためだけに保持しました。ええ、あなたは正しいです
-AmmarR

大文字と小文字を区別SQL Serverインスタンスの注意、欠場する上記のコードdeleteDELETEあなたは、例えば、where句の大文字と小文字を区別しないようにしたいこと、など: WHERE dest.text LIKE '%DELETE %' COLLATE Latin1_General_CI_AS
マックス・バーノン

11

ログ内でLOP_DELETE_ROWS操作を探すことにより、削除された個々の行を表示できます。

select * from fn_dblog(NULL, NULL) 
where Operation = 'LOP_DELETE_ROWS'

ログがリサイクルされた場合(単純復旧モデル)またはバックアップによって切り捨てられた場合(完全復旧モデルまたは一括復旧モデル)、ログで利用可能なログ操作のみを表示できます。

ログ操作の理解は非常に複雑です。発生する可能性のあるログパターンを理解するには、元に戻す操作や補正操作などに注意する必要がありますが、直接コミットされたDELETEを理解するのはかなり簡単です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.