Sql 将记录从DB写入varchar变量/更新触发器

Sql 将记录从DB写入varchar变量/更新触发器,sql,sql-server-2008,tsql,Sql,Sql Server 2008,Tsql,我有两个问题需要帮助:) 我必须在sys表上创建触发器来记录任何更改,例如更新、删除和插入 我想将日志保存在表中,该表将有一列存储记录中的数据(旧的或新的-插入/删除),或存储记录的旧版本和新版本之间的差异(更新) 我的问题是如何存储这些信息,特别是如何将简单记录“转换”为字符串,以及如何记录更新。我想我可以用这样的东西: exec ('select ' + @col + ' from deleted') 跳跳虎的身体,但它不工作 @col变量是列的名称。我不知道列的名称及其计数(我希望我的触

我有两个问题需要帮助:)

我必须在sys表上创建触发器来记录任何更改,例如更新、删除和插入

我想将日志保存在表中,该表将有一列存储记录中的数据(旧的或新的-插入/删除),或存储记录的旧版本和新版本之间的差异(更新)

我的问题是如何存储这些信息,特别是如何将简单记录“转换”为字符串,以及如何记录更新。我想我可以用这样的东西:

exec ('select ' + @col + ' from deleted')
跳跳虎的身体,但它不工作

@col变量是列的名称。我不知道列的名称及其计数(我希望我的触发器对每个表都是通用的)。要存储列名,我使用基于命令的游标:

select 
  COLUMN_NAME 
from 
  INFORMATION_SCHEMA.COLUMNS 
where 
  TABLE_NAME = (SELECT object_name(parent_obj) 
                FROM sysobjects WHERE id = @@procid)

请帮助:)

尽管您可以设置一个非常有用的工具(您可能会发现本文很有用)。

我知道有一些审计工具,但我只能使用t-sql来完成这项工作。我认为这可能非常有用。谢谢链接上的脚本显示了如何设置表并向要审核的表添加触发器。