USP_GLOBALCHANGE_AUDIT_ENABLEDISABLE
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ENABLE | bit | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@ASOF | datetime | IN | |
@NUMBERADDED | int | INOUT | |
@NUMBEREDITED | int | INOUT | |
@NUMBERDELETED | int | INOUT | |
@SELECTIONID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_GLOBALCHANGE_AUDIT_ENABLEDISABLE
@ENABLE bit,
@CHANGEAGENTID uniqueidentifier = null,
@ASOF as datetime = null,
@NUMBERADDED int = 0 output,
@NUMBEREDITED int = 0 output,
@NUMBERDELETED int = 0 output,
@SELECTIONID uniqueidentifier = null
with execute as owner
as
set nocount on;
set @NUMBERADDED = 0;
set @NUMBEREDITED = 0;
set @NUMBERDELETED = 0;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
begin try
if OBJECT_ID('tempdb..#GLOBALCHANGE_AUDIT_ENABLEDISABLE_TABLELIST') is not null
drop table #GLOBALCHANGE_AUDIT_ENABLEDISABLE_TABLELIST;
create table #GLOBALCHANGE_AUDIT_ENABLEDISABLE_TABLELIST (CATALOGID uniqueidentifier, TABLENAME nvarchar(128) collate DATABASE_DEFAULT);
insert into #GLOBALCHANGE_AUDIT_ENABLEDISABLE_TABLELIST
select CATALOGID, TABLENAME from dbo.UFN_TABLE_STATISTICS()
where ISAUDITTABLE=1 and RIGHT(TABLENAME,5) = 'AUDIT';
create index IX_TMP_GLOBALCHANGE_AUDIT_ENABLEDISABLE_TABLELIST_CATALOGID on #GLOBALCHANGE_AUDIT_ENABLEDISABLE_TABLELIST (CATALOGID);
declare @AUDITTABLES table (ID int IDENTITY (1, 1) Primary key NOT NULL, TABLENAME nvarchar(128));
if @SELECTIONID is null
insert into @AUDITTABLES (TABLENAME)
select LEFT(TABLENAME,LEN(TABLENAME)-5) from #GLOBALCHANGE_AUDIT_ENABLEDISABLE_TABLELIST;
else
insert into @AUDITTABLES (TABLENAME)
select LEFT(TABLENAME,LEN(TABLENAME)-5) from #GLOBALCHANGE_AUDIT_ENABLEDISABLE_TABLELIST
where CATALOGID in (select ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID));
declare @MAXROWS int;
select @MAXROWS = COUNT(*) from @AUDITTABLES;
--print @MAXROWS
declare @COUNT int = 1;
declare @AUDITTABLENAME nvarchar(128);
declare @CURRENT_VALUE int;
while @COUNT <= @MAXROWS
begin
set @CURRENT_VALUE=NULL;
set @AUDITTABLENAME = '';
select @AUDITTABLENAME = AT.TABLENAME from @AUDITTABLES AT
where AT.ID = @COUNT;
if (@AUDITTABLENAME <> '') and (exists (select 1 from sys.tables as t where t.name=@AUDITTABLENAME and t.schema_id=SCHEMA_ID('dbo')))
begin
select @CURRENT_VALUE = cast(ep.value as int) from sys.extended_properties as ep where ep.class=1 and ep.minor_id=0 and ep.major_id=OBJECT_ID(@AUDITTABLENAME) and ep.name='BB_Audit';
if @CURRENT_VALUE is null
begin
exec dbo.USP_ENABLEAUDIT @AUDITTABLENAME,@ENABLE;
SET @NUMBEREDITED=@NUMBEREDITED+1;
end
else if @CURRENT_VALUE = 1 and @ENABLE=0
begin
exec dbo.USP_ENABLEAUDIT @AUDITTABLENAME,@ENABLE;
SET @NUMBEREDITED=@NUMBEREDITED+1;
end
else if @CURRENT_VALUE = 0 and @ENABLE=1
begin
exec dbo.USP_ENABLEAUDIT @AUDITTABLENAME,@ENABLE;
SET @NUMBEREDITED=@NUMBEREDITED+1;
end
else if @CURRENT_VALUE not in (0,1)
begin
exec dbo.USP_ENABLEAUDIT @AUDITTABLENAME,@ENABLE;
SET @NUMBEREDITED=@NUMBEREDITED+1;
end
end
set @COUNT = @COUNT + 1;
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch