【问题标题】:How to capture truncate statement information in SQL Server 2012如何在 SQL Server 2012 中捕获截断语句信息
【发布时间】:2014-12-17 12:32:29
【问题描述】:

我想为我的生产服务器中的所有数据库捕获截断语句信息以及用户/登录信息。

例子:

Use mydb
go 
truncate table deleteme_table

我想将信息捕获到下表中

Table           Operation   Database    Login              Time
deleteme_table  Truncate    mydb        sandeep.pulikonda  17-12-2014 17:50:00

如果上述情况不可行,请提出可能的捕获方法

我使用的是 SQL Server 2012 标准版。因此,该版本不支持细粒度审计。

【问题讨论】:

  • SQL Server 默认不跟踪此信息。您需要使用服务器端跟踪(Profiler 是 NOT “好方法”)或使用扩展事件。默认跟踪不会捕获此信息,并且没有支持 DDL 触发方法的 DDL 事件(尽管I just asked for one.)。

标签: sql triggers sql-server-2012 truncate truncate-log


【解决方案1】:

您可以使用 SQL Server 审核功能并为这些查询添加审核。

this article explains in detail how to obtain this.

另一种分析 SQL Server 的好方法是使用 SQL Profiler。这是一个与您类似的 SO 问题和一个描述如何使用 SQL Profiler 来实现结果的答案。

SQL Server Profiler - How to filter trace to only display TSQL containing a DELETE statement?

【讨论】:

  • 抱歉,我使用的是 SQL Server 2012 标准版。因此,该版本不支持粒度级别审计。
  • 试试我的第二个建议,SQL Server Profiler。
  • 好的。示踪剂可以一直捕获吗?我的意思是像表触发器
  • 很遗憾 Profiler 确实会对性能产生影响,因此不建议永久使用。
  • 我看到扩展事件是 Microsoft 推荐用于此类任务的技术,但我不确定您是否可以通过这种方式解决您的问题。查看这篇文章,它解释了如何在 SSMS 2012 中定义和使用扩展事件。simple-talk.com/sql/database-administration/…
猜你喜欢
  • 2015-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-30
  • 2016-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多