تخفیف های داغ در جشنواره تابستانه توسینسو تخفیف های داغ در جشنواره تابستانه توسینسو
مانده تا پایان تخفیف
مشاهده دوره ها
0

پیدا کردن یوزر و زمان پاک شدن رکوردهای یک table در دیتا بیس sql

با سلام

وقت بخیر آیا امکان پیدا کردن یوزر و زمان پاک شدن رکوردهای یک table در دیتا بیس sql وجود دارد

یعنی بشه فهمید چه یوزری اطلاعات یک table رو در database پاک کرده؟

پرسیده شده در 1396/07/29 توسط

3 پاسخ

1

سلام

در صورتی که دیتابیس شما مدل full recovery mode داشته باشد، یعنی تراکنش ها در فایل log ذخیره شوند، بله امکان پذیر هست.

SQL Database Recovery Mode

البته در صورتی که کاربران از طریق یک یوزرنیم به دیتابیس متصل میشن، دیگه پیگیری به نظرم معنایی نداره.

از طریق query زیر میتونید شناسه تراکنش رو پیدا کنید.

USE YourTableName
GO
SELECT 
    [Transaction ID],
    Operation,
    Context,
    AllocUnitName
    
FROM 
    fn_dblog(NULL, NULL) 
WHERE 
    'Operation = 'LOP_DELETE_ROWS

سلام
در صورتی که دیتابیس شما مدل full recovery mode داشته باشد، یعنی تراکنش ها در فایل log ذخیره شوند، بله امکان پذیر هست.
||SQL Database Recovery Mode::https://dba.tosinso.com/files/get/116abeb5-2b92-4c07-b3b6-5ff32d01e29c||

البته در صورتی که کاربران از طریق یک یوزرنیم به دیتابیس متصل میشن، دیگه پیگیری به نظرم معنایی نداره.

از طریق query زیر میتونید شناسه تراکنش رو پیدا کنید.
<sql>
USE YourTableName
GO
SELECT 
    [Transaction ID],
    Operation,
    Context,
    AllocUnitName
    
FROM 
    fn_dblog(NULL, NULL) 
WHERE 
    'Operation = 'LOP_DELETE_ROWS
<sql>

||https://dba.tosinso.com/files/get/b83b1357-5f5a-43f1-8fee-c1bcdf70b2ec||
بعنوان مثال همونطور که در این عکس میبینید، عمل پاک شدن رکورد بروی جدول dbo.Location و با شناسه تراکنش 0000:000004ce صورت گرفته.

حال از طریق query زیر می تونید زمان و شناسه یوزری که این عمل رو انجام داده ببینید.
<sql>
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'
<sql>

||https://dba.tosinso.com/files/get/6e8f6954-211b-4800-85bb-614f25bf6fb4||
بعنوان مثال همونطور که در عکس بالا میبینید، شناسه یوزر در ستون Transaction SID قابل نمایش هست

حال از طریق query زیر و SID که در مرحله قبل پیدا کردین یوزرنیم رو میتونید پیدا کنید.
<sql>
USE MASTER
GO   
SELECT SUSER_SNAME(0x0105000000000005150000009F11BA296C79F97398D0CF19E8030000)
<sql>

|منبع::https://www.mssqltips.com/sqlservertip/3090/how-to-find-user-who-ran-drop-or-delete-statements-on-your-sql-server-objects/|

بعنوان مثال همونطور که در این عکس میبینید، عمل پاک شدن رکورد بروی جدول 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'

سلام
در صورتی که دیتابیس شما مدل full recovery mode داشته باشد، یعنی تراکنش ها در فایل log ذخیره شوند، بله امکان پذیر هست.
||SQL Database Recovery Mode::https://dba.tosinso.com/files/get/116abeb5-2b92-4c07-b3b6-5ff32d01e29c||

البته در صورتی که کاربران از طریق یک یوزرنیم به دیتابیس متصل میشن، دیگه پیگیری به نظرم معنایی نداره.

از طریق query زیر میتونید شناسه تراکنش رو پیدا کنید.
<sql>
USE YourTableName
GO
SELECT 
    [Transaction ID],
    Operation,
    Context,
    AllocUnitName
    
FROM 
    fn_dblog(NULL, NULL) 
WHERE 
    'Operation = 'LOP_DELETE_ROWS
<sql>

||https://dba.tosinso.com/files/get/b83b1357-5f5a-43f1-8fee-c1bcdf70b2ec||
بعنوان مثال همونطور که در این عکس میبینید، عمل پاک شدن رکورد بروی جدول dbo.Location و با شناسه تراکنش 0000:000004ce صورت گرفته.

حال از طریق query زیر می تونید زمان و شناسه یوزری که این عمل رو انجام داده ببینید.
<sql>
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'
<sql>

||https://dba.tosinso.com/files/get/6e8f6954-211b-4800-85bb-614f25bf6fb4||
بعنوان مثال همونطور که در عکس بالا میبینید، شناسه یوزر در ستون Transaction SID قابل نمایش هست

حال از طریق query زیر و SID که در مرحله قبل پیدا کردین یوزرنیم رو میتونید پیدا کنید.
<sql>
USE MASTER
GO   
SELECT SUSER_SNAME(0x0105000000000005150000009F11BA296C79F97398D0CF19E8030000)
<sql>

|منبع::https://www.mssqltips.com/sqlservertip/3090/how-to-find-user-who-ran-drop-or-delete-statements-on-your-sql-server-objects/|

بعنوان مثال همونطور که در عکس بالا میبینید، شناسه یوزر در ستون Transaction SID قابل نمایش هست

حال از طریق query زیر و SID که در مرحله قبل پیدا کردین یوزرنیم رو میتونید پیدا کنید.

USE MASTER
GO   
SELECT SUSER_SNAME(0x0105000000000005150000009F11BA296C79F97398D0CF19E8030000)

منبع

پاسخ در 1396/07/29 توسط
0

میشه عکس آخر رو دوباره بفرستین خط آخر واضح نیست با تشکر

پاسخ در 1396/07/29 توسط

پاسخ شما