第一步:
1、對庫級別操作
ALTER DATABASE 數據庫名 SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 2 DAYS,AUTO_CLEANUP = ON)
2、查看是否生效
SELECT DB_NAME(database_id) DataBaseName,is_auto_cleanup_on,retention_period,retention_period_units_desc FROM sys.change_tracking_databases
第二步:
1、對表級別操作
--對表啟用更改跟蹤
ALTER TABLE [dbo].[Department] ENABLE CHANGE_TRACKING WITH (TRACK_COLUMNS_UPDATED = ON)
--批量執行開啟dbo下表級別change tracking (如果已開啟會自動跳過) begin
declare @name varchar(500)
declare @sql varchar(500)
declare ct_cur cursor for
select
'['+schema_name(a.schema_id)+']'+'.'+'['+a.name+']' from sys.objects a join sys.objects b on a.object_id = b.parent_object_id
and a.type = 'U' and b.type = 'PK'
and schema_name(a.schema_id) = 'dbo'
and b.name is not null
open ct_cur
fetch next from ct_cur into @name
while @@FETCH_STATUS = 0
begin
set @sql = 'alter table ' + @name + ' enable change_tracking with (track_columns_updated = on)'
print @sql
begin try
begin tran
execute (@sql)
commit tran
end try
begin catch
rollback
select '已對表'+ @name +' 啟用了更改跟蹤'
end catch
set @sql = '';
fetch next from ct_cur into @name
end
close ct_cur
deallocate ct_cur
end
go
2、查看是否生效
SELECT OBJECT_NAME(object_id) TableName,is_track_columns_updated_on FROM sys.change_tracking_tables
第三步:(可針對個別表進行開啟或者全部開啟,可選擇執行)
針對表級別
grant select on table_name to user;
grant view change tracking on object::table_name to user;
或
對schema級別
grant select on schema::dbo to user;
grant view change tracking on schema::dbo to user;