پیدا کردن یوزر و زمان پاک شدن رکوردهای یک table در دیتا بیس sql
با سلام
وقت بخیر آیا امکان پیدا کردن یوزر و زمان پاک شدن رکوردهای یک table در دیتا بیس sql وجود دارد
یعنی بشه فهمید چه یوزری اطلاعات یک table رو در database پاک کرده؟
3 پاسخ
سلام
در صورتی که دیتابیس شما مدل full recovery mode داشته باشد، یعنی تراکنش ها در فایل log ذخیره شوند، بله امکان پذیر هست.
البته در صورتی که کاربران از طریق یک یوزرنیم به دیتابیس متصل میشن، دیگه پیگیری به نظرم معنایی نداره.
از طریق query زیر میتونید شناسه تراکنش رو پیدا کنید.
USE YourTableName
GO
SELECT
[Transaction ID],
Operation,
Context,
AllocUnitName
FROM
fn_dblog(NULL, NULL)
WHERE
'Operation = 'LOP_DELETE_ROWS
بعنوان مثال همونطور که در این عکس میبینید، عمل پاک شدن رکورد بروی جدول dbo.Location و با شناسه تراکنش 0000:000004ce صورت گرفته.
حال از طریق query زیر می تونید زمان و شناسه یوزری که این عمل رو انجام داده ببینید.
USE YourTableName
GO
SELECT
Operation,
[Transaction ID],
[Begin Time],
[Transaction Name],
[Transaction SID]
FROM
fn_dblog(NULL, NULL)
WHERE
[Transaction ID] = '0000:000004ce'
AND
[Operation] = 'LOP_BEGIN_XACT'
بعنوان مثال همونطور که در عکس بالا میبینید، شناسه یوزر در ستون Transaction SID قابل نمایش هست
حال از طریق query زیر و SID که در مرحله قبل پیدا کردین یوزرنیم رو میتونید پیدا کنید.
USE MASTER GO SELECT SUSER_SNAME(0x0105000000000005150000009F11BA296C79F97398D0CF19E8030000)
بله، البته در داخل صفحه منبع بود
میشه عکس آخر رو دوباره بفرستین خط آخر واضح نیست با تشکر