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