多くの人がアクセスできるテーブルがテーブルにあります。私のテーブルにはいくつかのデータがありません。どのテーブルからその行を削除したのかを知るにはSQL Serverのテーブルからデータを削除した人を見つける方法
答えて
あなたは少しスニペットに従うことで、データのユーザ名を削除見つけることができます:
DECLARE @TableName sysname
SET @TableName = 'dbo.t1_new' --INPUT TABLE NAME
SELECT
u.[name] AS UserName
, l.[Begin Time] AS TransactionStartTime
FROM
fn_dblog(NULL, NULL) l
INNER JOIN
(
SELECT
[Transaction ID]
FROM
fn_dblog(NULL, NULL)
WHERE
AllocUnitName LIKE @TableName + '%'
AND
Operation = 'LOP_DELETE_ROWS'
) deletes
ON deletes.[Transaction ID] = l.[Transaction ID]
INNER JOIN
sysusers u
ON u.[sid] = l.[Transaction SID]
ソース:dba.stackexchange (私はそれを掲示誰覚えていません)
残念ながら、削除したレコードは自分のどこかに置かないと表示されません。
このタイプの介入を追跡する場合は、実際にレコードを削除しないでください。 代わりに、テーブルにいくつかのフィールドを作成する必要があります。ここ はexempleです:
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Person](
[Pers_ID] [int] IDENTITY(1,1) NOT NULL,
[Pers_CompanyID] [int] NULL,
[Pers_FirstName] [nvarchar](50) NULL,
[Pers_LastName] [nvarchar](50) NULL,
[Pers_CreatedBy] [int] NULL,
[Pers_CreatedDate] [datetime] NULL,
[Pers_UpdatedBy] [int] NULL,
[Pers_UpdatedDate] [datetime] NULL,
[Pers_Deleted] [bit] NULL,
CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED
(
[Pers_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ユーザーがレコードを作成するとき、あなたはCREATEDBY =ユーザーIDを設定することができ、CreatedDateに= CURRENTDATE、
記録、UpdatedBy =ユーザーIDを更新しながら、UpdatedDate = CURRENTDATE
削除し、削除済み= True、UpdatedBy =ユーザーID、UpdatedDate = CurrentDate。
あなたのコードでは、すべてのクエリで、条件を削除する必要があります= null。
したがって、レコードの作成、更新、削除を追跡できます。
すでに削除されているデータについて知りたい。 – Simran
あなたが完全に調査するApexSQLログを使用することができますあなたのテーブルに対して実行された操作。データベースは完全リカバリモデルにする必要があります。そのため、過去の操作に関する情報は、ApexSQL Logがトランザクションログファイル内で使用できるようになっています。ツールがあなたのt-logを分析すると、操作の開始と終了の時間、操作の種類、影響を受けるオブジェクトのスキーマとオブジェクト名、操作を実行したユーザーの名前などを見ることができます。 UPDATEの場合は、更新されたフィールドの古い値と新しい値を見ることさえできます。
この上のいくつかのガイドがさらにhttps://solutioncenter.apexsql.com/apexsql-log-solutions-table-of-contents/
ここにあります必要であれば、あなたも、それらのトランザクションをロールバックするApexSQLログを使用することができます。単に元に戻すと、元の状態に戻すことができます。
- 1. ブランチを削除した人を見つけますか?
- 2. SQL Serverテーブルからデータをバッチ削除する
- 3. SQL Serverのジョブからspcificパラメータ値を見つける方法
- 4. S3バケットでデータをアップロードした人を見つける方法
- 5. SQLテーブルからデータを削除する
- 6. SQL Serverテーブルの外部キーを使用したデータの削除
- 7. sharedPreferencesからアイテムを削除する方法を見つける
- 8. 最後に削除されたSQL Serverテーブルの削除されたデータをロールバックする方法
- 9. SQLテーブルの列から欠落した日付を見つける方法は?
- 10. SQL Serverの参照テーブルから削除するトリガーを作成する方法
- 11. SQL Server 2005のテーブルからすべての行を削除する方法
- 12. OracleテーブルからSQL Serverテーブルにデータをプッシュする方法は?
- 13. プロジェクトから削除した後に参照.dllを見つける方法
- 14. SQL INNER JOINを使用してテーブルからデータを削除する方法
- 15. SQL Server 2008でSQLロックを見つける最良の方法
- 16. テーブルから複数のスペースを削除するSQL Serverで
- 17. トリガーを作成する方法[テーブル] MS SQL Serverで削除
- 18. 与えられたテーブルの子テーブルを見つける方法
- 19. いくつかのテーブルを除いてデータベースからすべてのテーブルのデータを削除する方法
- 20. ストアドプロシージャの削除されたテーブルフィールドを見つける方法
- 21. 複数のテーブルから1つのレコードを削除するSQL Serverのトリガー
- 22. SQL Serverテーブルから重複する行を削除する
- 23. SQL Serverのテーブルからデータを検索する方法
- 24. MS Server上のSQLの複数の関連テーブルから膨大な量のデータを削除する方法
- 25. SQL Serverのテーブルでn番目に高い値を見つける方法
- 26. SQL Serverからディレクトリを削除する方法は?
- 27. 糸のアプリケーションを殺した人を見つける方法
- 28. システムテーブルまたはSQL Serverリンクサーバーの他のテーブルを削除する方法
- 29. SQL Server 2005で1つのテーブルからデータをピボットする方法
- 30. SQL Server:2つのテーブルからデータを取得する実行方法
あなたはデータベースのバックアップを取っていますか?そうでない場合は、それ以外の方法であなたを助けることができるサードパーティのツールがあります。試してみてくださいhttp://www.apexsql.com/sql_tools_log.aspx –
@Simranあなたは[SysTools SQL Log Analyzer](https://www.systoolsgroup.com/sql-log-analyzer.html)を分析することができます挿入、更新、削除などのすべてのユーザートランザクションアクティビティを含むSQL Serverデータベース内のユーザーアクティビティ –
@Sushil Mate私たちはデータベースのバックアップを持っていません。私は他のテスト環境でデータを持っています。ナット私の了承なしにそれを削除した犯人を見つけたい – Simran