【问题标题】:Audit Microsoft SQL Server table with many columns审核包含多列的 Microsoft SQL Server 表
【发布时间】:2016-04-12 19:59:09
【问题描述】:

我无法在我的桌子上进行此审核。

我有一个包含 197 列的表,我想对其进行审核。我们之前已经成功地使用过这个解决方案,但表格总是有较少的列。

我实施的解决方案来自底部的这个 url。

这似乎与我的表有这么多列有关。有没有人对此有任何意见?

Pop Rivett SQL Server Audit

【问题讨论】:

  • 错误/警告/部分工作?

标签: sql-server security user-input audit


【解决方案1】:

我有两个想法too many columns vs 错误的序号位置。

链接中的代码是 2006 年的。所以它是为SQL Server 2005 编写的。基于COLUMNS_UPDATED()

INFORMATION_SCHEMA.COLUMNS 视图的 ORDINAL_POSITION 列是 与返回的列的位模式不兼容 COLUMNS_UPDATED。

获得兼容的位模式 COLUMNS_UPDATED,引用 COLUMNPROPERTY 的 ColumnID 属性 查询 INFORMATION_SCHEMA.COLUMNS 视图时的系统函数。

CREATE TABLE tab(id INT, col1 INT, col2 INT, col3 INT,
                 col4 INT, col5 INT, col6 INT, col7 INT, col8 INT);

ALTER TABLE tab DROP COLUMN col1;
ALTER TABLE tab DROP COLUMN col5;

ALTER TABLE tab ADD col9 INT;
ALTER TABLE tab ADD col1 INT;

SELECT column_name,
  ordinal_position,
  COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME),      
                 COLUMN_NAME, 'ColumnID') AS pos
FROM INFORMATION_SCHEMA.columns
 WHERE [TABLE_NAME] like '%tab%'
ORDER BY ordinal_position;

SqlFiddleDemo

输出:

╔══════════════╦═══════════════════╦═════╗
║ column_name  ║ ordinal_position  ║ pos ║
╠══════════════╬═══════════════════╬═════╣
║ id           ║                1  ║   1 ║
║ col2         ║                2  ║   3 ║
║ col3         ║                3  ║   4 ║
║ col4         ║                4  ║   5 ║
║ col6         ║                5  ║   7 ║
║ col7         ║                6  ║   8 ║
║ col8         ║                7  ║   9 ║
║ col9         ║                8  ║  10 ║
║ col1         ║                9  ║  11 ║
╚══════════════╩═══════════════════╩═════╝

结果:

ORIDINAL_POSITION -> no gaps, range 1-9
pos(aka ColumnId) -> gaps, range 1-11, 2 and 6 skipped

也可以使用UPDATE 来检查列是否已更改:

更新(列)

返回一个布尔值,指示是 INSERT 还是 UPDATE 对表或视图的指定列进行了尝试。更新()是 在 Transact-SQL INSERT 或 UPDATE 主体内的任何位置使用 触发器来测试触发器是否应该执行某些操作。

【讨论】:

    猜你喜欢
    • 2016-09-18
    • 2013-04-03
    • 2011-07-21
    • 2010-09-26
    • 2012-08-07
    • 1970-01-01
    • 2014-12-09
    • 2013-12-19
    • 1970-01-01
    相关资源
    最近更新 更多