PDA

View Full Version : Log گرفتن از تغییرات در SQL Server



mojtaba_z
یک شنبه 28 بهمن 1386, 09:40 صبح
سلام
توی SQL Server 2000 میخوام هر تغییر و رخدادی ثبت بشه. یعنی اگه جدولی ، فیلدی ، رکوردی یا ... تغییر ، حذف یا ... شد اطلاعات اون با ذکر نام کاربری ویندوز کسی که تغییر داده بهمراه نام ورودی به SQL Server و نام کامپیوتر و زمان تغییر و مقدار قبل و بعد از تغییر و موارد دیگه ای که برای Log گرفتن نیاز هست رو ثبت کنه. برای این مورد آیا کدی وجود داره ؟

reza_rad
یک شنبه 28 بهمن 1386, 10:50 صبح
باید از یک دیتابیس LOG در کنار دیتابیس تون استفاده کنید با ساختاری مشابه ساختار دیتابیس اصلی .و برای تمام جدولهاتون توی دیتابیس اصلی تریگر بنویسید که تمام تغییرات رو در دیتابیس LOG ذخیره کنه.
برای توضیحات بیشتر توی همین تالار جستجو کنید .

mojtaba_z
یک شنبه 28 بهمن 1386, 11:53 صبح
سلام
کلمه Log رو جستجو کردم ولی چیزی پیدا نکردم.
قبلا در مورد این موضوع و Triger یه چیزایی توی سایت پیدا کرده بودم ولی الان هرچی جستجو میکنم چیزی پیدا نمی کنم.

Elham_gh
یک شنبه 28 بهمن 1386, 12:42 عصر
سلام
توی SQL Server 2000 میخوام هر تغییر و رخدادی ثبت بشه. یعنی اگه جدولی ، فیلدی ، رکوردی یا ... تغییر ، حذف یا ... شد اطلاعات اون با ذکر نام کاربری ویندوز کسی که تغییر داده بهمراه نام ورودی به SQL Server و نام کامپیوتر و زمان تغییر و مقدار قبل و بعد از تغییر و موارد دیگه ای که برای Log گرفتن نیاز هست رو ثبت کنه. برای این مورد آیا کدی وجود داره ؟


راه دیگری هم هست. SQL Server خودش این log ها رو نگه می داره. که البته امکان خوندنش برای شما نیست. اما tools هایی وجود دارند که این کار را می کنند. اگر امکان استفاده از این tools ها برای شما باشد بهتر است. چون trigger رو تمام جداول در تمام DML ها پدر database رو در می یاره!
نمونه:http://www.lumigent.com/وhttp://www.logpi.com

ali_abbasi22145
یک شنبه 28 بهمن 1386, 12:47 عصر
راه دیگری هم هست. SQL Server خودش این log ها رو نگه می داره. که البته امکان خوندنش برای شما نیست. اما tools هایی وجود دارند که این کار را می کنند. اگر امکان استفاده از این tools ها برای شما باشد بهتر است. چون trigger رو تمام جداول در تمام DML ها پدر database رو در می یاره!

سلام
فکر نکنم چنین tools و چنین امکانی با SQL SERVER 2000 باشد اگر هست من شدیدا دنبالشم. نام این ابزارها را می توانید بگویید؟

reza_rad
یک شنبه 28 بهمن 1386, 12:52 عصر
Here's three separate triggers, one each for insert, update and delete. Hope it covers what you want. Each of them will insert a row into the audit table with a character showing the action (I, U or D) along with the username and datetime of the action.
These triggers will insert a row showing the new values for inserted or updated rows, or the old values for deleted rows.

-- Create the Insert trigger for the Pocket Books table.
CREATE TRIGGER [trg_PocketBooks_Insert]
ON [DBO].[PocketBooks]
FOR INSERT
AS
INSERT INTO [DBO].[aud_PocketBooks]
(auditActionType,
auditActionDate,
auditActionBy,
ItemID,
BookNo,
BookStartDate,
BookEndDate)
SELECT 'I',
GETDATE(),
USER_NAME(),
ins.ItemID,
ins.BookNo,
ins.BookStartDate,
ins.BookEndDate
FROM inserted ins
GO


-- Create the Update trigger for the Pocket Books table.
CREATE TRIGGER [trg_PocketBooks_Update]
ON [DBO].[PocketBooks]
FOR UPDATE
AS
INSERT INTO [DBO].[aud_PocketBooks]
(auditActionType,
auditActionDate,
auditActionBy,
ItemID,
BookNo,
BookStartDate,
BookEndDate)
SELECT 'U',
GETDATE(),
USER_NAME(),
upd.ItemID,
upd.BookNo,
upd.BookStartDate,
upd.BookEndDate
FROM inserted upd
GO


-- Create the Delete trigger for the Pocket Books table.
CREATE TRIGGER [trg_PocketBooks_delete]
ON [DBO].[PocketBooks]
FOR DELETE
AS
INSERT INTO [DBO].[aud_PocketBooks]
(auditActionType,
auditActionDate,
auditActionBy,
ItemID,
BookNo,
BookStartDate,
BookEndDate)
SELECT 'D',
GETDATE(),
USER_NAME(),
del.ItemID,
del.BookNo,
del.BookStartDate,
del.BookEndDate
FROM deleted del
GO
منبع:
http://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/Q_22830880.html

Elham_gh
یک شنبه 28 بهمن 1386, 13:03 عصر
سلام
فکر نکنم چنین tools و چنین امکانی با SQL SERVER 2000 باشد اگر هست من شدیدا دنبالشم. نام این ابزارها را می توانید بگویید؟

toolsی به نام LogExplorer از http://www.lumigent.com/

mojtaba_z
دوشنبه 13 اسفند 1386, 16:01 عصر
سلام

من یک جدول میخوام ایجاد کنم و اطلاعات Log رو توی اون بریزم. اگه ممکنه یک Trigger معرفی کنید که این اطلاعات رو وقتی دیتا Insert یا Update یا Delete میشه توی جدول بریزه :
1- نام جدول
2- نام فیلد
3- تاریخ تغییر
4- نام کاربر ویندوز
5- نام کامپیوتر
6- مقدارقبلی
7- مقدار جدید

Step_one
دوشنبه 13 اسفند 1386, 19:54 عصر
سلام

من یک جدول میخوام ایجاد کنم و اطلاعات Log رو توی اون بریزم. اگه ممکنه یک Trigger معرفی کنید که این اطلاعات رو وقتی دیتا Insert یا Update یا Delete میشه توی جدول بریزه :
1- نام جدول
2- نام فیلد
3- تاریخ تغییر
4- نام کاربر ویندوز
5- نام کامپیوتر
6- مقدارقبلی
7- مقدار جدید
after Insert
after update
after delete
!!!!!!

mojtaba_z
سه شنبه 14 اسفند 1386, 07:25 صبح
after Insert
after update
after delete
!!!!!!
یعنی چی ؟؟؟