sql server开启change tracking


第一步:

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;


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM