应用场景:变更数据捕获cdc当程序中出现truncate语句的时候,会导致程序报错不能正常执行。如果如果修改程序的话,可以通过触发器实现变更数据捕获
不足之处:对于insert bulk是不生效的。
--创建表存放列名
if exists (select 1 from sys.tables where name like 'hb_columncollect')
drop table hb_columncollect
create table hb_columncollect(ffieldname nvarchar(100) ,fid int )
--存储过程用来拼写非计算列的列名
if exists (select 1 from sys.objects where name='sp_columncollect_alter' and type='P')
drop procedure sp_columncollect_alter
go
create procedure sp_columncollect_alter
@ftablename nvarchar(100),
@string nvarchar(max) out
as
set nocount on
delete from hb_columncollect
exec('insert into hb_columncollect(ffieldname,fid)
select name,column_id from sys.columns t where object_id=OBJECT_ID('''+@ftablename+''') and is_computed<>1 order by column_id ')
set @string=''
select @string=@s