我们对我们的一个高效的客户环境产生了恼人的影响。定期(每周2-3次,但不总是在同一时间)一个脚本,我不知道该脚本来自哪里(可能来自一个程序,可能是db-server上的某个脚本),更改如1,5百万行并在一个表中更新3列。
是否有任何可能的方法来捕获并找出哪些脚本负责更改?
感谢您的帮助和您的想法。
答案 0 :(得分:0)
我会尝试:
1)为SQL Server安装Red Gate SQL Search Addon
(http://www.red-gate.com/products/sql-development/sql-search/)
这允许您搜索任何内容。例如。在搜索字段中输入UPDATE
,它会显示所有内部都有UPDATE
语句的脚本等。
2)运行SQL事件探查器
https://msdn.microsoft.com/en-us/library/ms181091.aspx
允许您跟踪在服务器上运行的SQL命令,并根据您的定义将它们存储在日志中。但它需要服务器的大部分资源,所以要注意这一点。
3)编写触发器
触发更新语句的记录。
我认为第一个选项对你来说应该足够了。假设更新发生在某个存储过程或可能的任何SQL Server对象中,这也是找到此类更新语句的最快方法。
答案 1 :(得分:0)
有几种方法可以针对数据库表捕获DML操作。其中一种首选方法是通过在数据库级别编写触发器来捕获所有插入/更新/删除操作来构建审计试验。有几个有用的URL可以让你知道如何做到这一点。
要在数据库级别(作为管理员)执行相同操作,请按照以下网址
http://www.sqlshack.com/creating-successful-auditing-strategy-sql-server-databases/
随时留言以便进一步查询。