AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 446804
Accepted
scape
scape
Asked: 2012-11-09 08:16:37 +0800 CST2012-11-09 08:16:37 +0800 CST 2012-11-09 08:16:37 +0800 CST

建议的 MS SQL 审计方法跟踪特定用户对特定表所做的更改?

  • 772

当特定用户使用 Management Studio 时,跟踪更改或记录对表所做查询的最佳方法是什么?

我正在使用 2008 R2 Express Edition 并希望专门跟踪通过 Management Studio 登录并运行查询以手动进行更改的单个用户。我想查看运行了哪些查询,从而确定更改了什么以及如何更改。我对恢复信息不感兴趣。我考虑过 Change Tracking 但读到它也不是审计的理想选择我不确定如何读取数据,然后我考虑了数据库上的 Bulk-Logging 选项但是我必须考虑处理可能会变得很大的日志文件Web 应用程序不断使用该数据库。我想知道是否有更简洁的方法来做我想做的事?

sql-server
  • 2 2 个回答
  • 2463 Views

2 个回答

  • Voted
  1. Milena Petrovic
    2013-11-02T11:39:28+08:002013-11-02T11:39:28+08:00

    从 SQL Server 2008 开始,有 3 种本机审计解决方案 - 更改跟踪、更改数据捕获和 SQL Server 审计,但只有一种跟踪进行更改的用户

    变更跟踪不回答“谁”、“何时”和“如何”的问题。此外,如果特定行有多项更改,则仅显示最后一项。该功能仅指示该行是否已更改。它显示更改的行的 ID,以及更改的特定列。此功能未提供有关更改的详细信息。您可以将更改信息与数据库快照和实时数据库相匹配,以了解有关更改的更多信息,但这需要额外的编码,并且仍然无法提供审计可能需要的所有信息。它也不跟踪执行的查询。至于读取数据,没有内置的报告,必须使用变化跟踪功能

    将数据库设置为批量日志记录恢复模式不会提供有关对数据库执行的查询的信息。但是,它将提供有关谁做了什么的信息。为了防止在线数据库事务日志文件变得越来越大,请定期创建事务日志备份

    Change Data Tracking也不跟踪谁进行了更改以及执行了哪些代码。与 SQL Server Change Tracking 功能一样,SQL Server Change Data Capture 中的更改信息可通过表值函数获得

    Change Tracking 仅显示更改的内容以及更改是插入、更新还是删除,而 Change Data Capture 显示已修改行的插入、删除或更新值。对于更新,它显示更新行的旧值和新值

    SQL Server 审核是唯一捕获进行更改的用户名的功能。它还捕获 SELECT 和 EXECUTE 语句的执行。审计信息可以存储在 3 种类型的文件中 - *.sqladuit 文件、应用程序和安全日志,您可以使用 fn_get_audit_file 函数、SQL Server Management Studio 中的日志文件查看器实用程序和 Windows 事件查看器来读取它们

    此外,还有提供内置报告的第 3 方审计工具,例如ApexSQL Comply

    免责声明:我在 ApexSQL 担任支持工程师

    • 2
  2. Best Answer
    Greg Askew
    2012-11-09T08:35:19+08:002012-11-09T08:35:19+08:00

    更改跟踪不跟踪更改的实际数据。

    Change Data Capture 确实会跟踪已更改的数据,但这是一项企业版功能。

    您可以创建自己的审计表并为相应的 DML 和数据指定 BEFORE 触发器,以记录您想要的任何信息。

    比较变更数据捕获和变更跟踪
    http://msdn.microsoft.com/en-us/library/cc280519%28v=sql.105%29.aspx

    更改数据捕获
    http://msdn.microsoft.com/en-us/library/bb522489%28v=sql.105%29.aspx

    创建触发器 (Transact-SQL)
    http://msdn.microsoft.com/en-us/library/ms189799%28v=sql.105%29.aspx

    • 1

相关问题

  • sql server 连接字符串上的网络数据包大小以提高吞吐量

  • 基于 Microsoft 的服务器(IIS、MSSQL 等)上的病毒扫描应排除哪些内容?

  • SQL 洗衣清单

  • OPENROWSET、二进制文件、varchars 和 varbinaries

  • 聚集索引与非聚集索引?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve