thembale Ответов: 1

Как получить журнал аудита в таблице SQL


У меня есть хранимая процедура sql, которая используется для получения всех таблиц в моей базе данных sql, а также исключает членство пользователей и таблицы системных диаграмм в моих результатах, которые работают нормально. моя задача заключается в том, что я хочу создать еще одну хранимую процедуру, где я возьму каждую таблицу из списка таблиц, которые я получил при запуске первой процедуры хранения, и создам контрольный журнал для каждой, чтобы я мог видеть, кто что делал и когда. Я хочу иметь таблицу журнала аудита для этих результатов с этими полями
Идентификатор пользователя, имятаблицы, что изменения, даты и времени.

не могли бы вы мне помочь

Что я уже пробовал:

вот что я попробовал
USE [MISA]
GO
/****** Object:  StoredProcedure [dbo].[sp_ListAuditTables]    Script Date: 14/02/2018 14:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[sp_ListAuditTables] 
	-- Add the parameters for the stored procedure here
	--<@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>, 
	--<@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here

--SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME NOT LIKE 'ASP%' AND TABLE_NAME NOT LIKE 'SYS%'
--ORDER BY TABLE_NAME 
	--SELECT 'exec [sp_GenerateAuditTrail] @TableName=''' + TABLE_NAME + '''' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'
	--ORDER BY TABLE_NAME

		SELECT 'exec [sp_GenerateAuditTrail] @TableName=''' + TABLE_NAME + '''' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME NOT LIKE 'ASP%' AND TABLE_NAME NOT LIKE 'SYS%'
	ORDER BY TABLE_NAME
END


с помощью [sp_GenerateAuditTrail]

Maciej Los

А что вы пробовали до сих пор?
Примечание: мы не видим ваш экран и не имеем доступа к вашим данным. Вы должны быть более конкретны и предоставить более подробную информацию, если вам нужна наша помощь.

1 Ответов

Рейтинг:
9

CHill60

Вы не можете создать журнал аудита "после события" - вы должны фиксировать происходящие изменения.

Есть несколько методов, которые вы можете использовать - в этой статье рассматриваются некоторые из них
Создание успешной стратегии аудита для баз данных SQL Server[^]

Метод, который мы использовали на (гораздо) более старой версии SQL, состоял в том, чтобы иметь триггеры на таблицах, которые мы хотели бы проверить, которые записывали записи "копирования" в другую базу данных.

Я не могу достаточно подчеркнуть важность правильного выбора стратегии - это может легко убежать с вами, если вы просто нырнете прямо.


Maciej Los

5ed!