it-swarm.dev

أفضل طريقة لتنفيذ مراجعة الحسابات في SQL Server؟

لا أعرف ما إذا كانت هذه المتطلبات قياسية أم لا ، لكنني أتساءل هل هناك حل يمكن القيام بما يلي:

  • بالنسبة لمجموعة محددة من الجداول ، احتفظ بنسخة من السجل قبل تغييره في إصدار تدقيق للجدول ذي الصلة.

أنا لا أحتاج إلى رمز هذا لكل جدول. أنا أتساءل عما إذا كان هناك حل يمكنك تثبيته على رأس SQL Server والذي سيفعل ذلك من أجلك؟

36
robotwasp

هناك العديد من الطرق للقيام بذلك؛ ذلك يعتمد على إصدار SQL Server الذي تستخدمه.

هنا قليل

35
Microtechie

يمكنني إنشاء المشغل الذي يفعله في XML بهذه الطريقة يمكننا تسجيل جميع الجداول في نفس الجدول ، مما يجعله أكثر مرونة

CREATE TABLE [dbo].[AuditAll] (
    AuditId    int           NOT NULL IDENTITY(1,1),
    [DateTime] datetime      NOT NULL,
    TableName  nvarchar(255) NOT NULL,
    AuditEntry xml           NULL,

    CONSTRAINT [PK_AuditAll] PRIMARY KEY CLUSTERED ( AuditId ASC )
)

كنت بحاجة فقط إلى القيم "القديمة" ، لذلك قمت بتخزين الجدول المحذوف فقط ، يمكن رؤية الجدول المدرج في الجدول على أي حال.

CREATE TRIGGER AuditSimple 
    ON Simple
    AFTER INSERT,DELETE,UPDATE
AS 
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

IF (SELECT COUNT(*) FROM deleted) > 0 
begin
    Declare @AuditMessage XML
    --set valut to all xml from deleted table
    set @AuditMessage = (select * from deleted for xml auto) 

    insert into AuditAll( DateTime, TableName, AuditEntry ) 
        values ( GetDate(), 'Simple', @AuditMessage )
end

END
GO

أعتقد أنه يمكن بسهولة استدعاء sp_foreach لإنشاءه لكل جدول في قاعدة البيانات ، لكننا لم نحتاج إليه في الوقت الحالي ، فقط تذكر تغيير أسماء الجداول الخاصة بك

في صحتك

8
zebra

يمكنك تجربة حل يستند إلى برنامج تشغيل النقر والإشارة للجهات الخارجية مثل ApexSQL Audit - أداة تدقيق لقواعد بيانات SQL Server ، والتي تلتقط تغييرات البيانات التي حدثت في قاعدة البيانات بما في ذلك المعلومات حول من إجراء التغيير ، أي الكائنات التي تأثرت ، متى تم إجراؤها ، وكذلك المعلومات المتعلقة بتسجيل الدخول إلى SQL والتطبيق والمضيف المستخدم لإجراء التغيير. يقوم بتخزين جميع المعلومات الملتقطة في مستودع مركزي وتصديرها بتنسيقات سهلة الطباعة

إخلاء المسؤولية: أعمل مهندس دعم المنتج في ApexSQL

5
Ivan Stankovic

إلقاء نظرة على مشغلات. هذه يمكن استخدامها لتنفيذ شيء لتناسب الاحتياجات الخاصة بك.

0
ChrisBint

ألقِ نظرة على هذه المقالة - التدوين في SQL Server 2008 والتي تستفيد بشكل جميل من ميزات التدقيق الموجودة بالفعل في SQL Server 2008.

يجب أن أذكر أيضًا أن إجاباتMicrotechie تشير إلى بعض المقالات الرائعة. اقرأهم وقرر أيهم أكثر سهولة في التكيف.

0
Soham Dasgupta