我有两个问题并寻求帮助:)
我必须在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)
请帮助:)
答案 0 :(得分:0)
虽然您可以设置非常sophisticated auditing mechanism in SQL server - 但您可能会发现这篇文章很有用 - it shows simple scripts for basic auditing。