【问题标题】:Can we monitor a database table read operation row-wise?我们可以按行监控数据库表读取操作吗?
【发布时间】:2018-08-29 04:05:25
【问题描述】:

我想在 SQL Server 2008 上对我的数据库中的一个表使用“读取操作”进行监控。

所以我想知道该表中的哪一行是在什么时间提取的。

我无法登录我的应用程序。

【问题讨论】:

  • 什么是“阅读”?你的意思是你想在任何SELECT 操作导致从一行中读取数据时记录?如果该行最初包含在子查询中但排除在外部查询中怎么办?仍然会导致读取的非 SELECT 操作(例如 UPDATE 或 MERGE)呢?暴露行级数据或备份操作的页面级数据库操作呢?
  • 嗨,戴,是的,我的意思是“选择”查询。对于背景,这是我的标准表,我不会在那里操作任何更新、合并、删除、编辑命令。在我的子查询的特殊情况下,排除永远不会发生。所以我希望在这个表上运行所有选择查询
  • 您想只监视临时 TSQL,还是还要监视对表的存储 proc 访问?
  • 您好,我还需要访问 Tsql 以及存储过程
  • OP 的评论如下:“索引未在该数据库上完成。” - 嗯,什么?你有更大的问题......

标签: sql-server database monitoring


【解决方案1】:

如果我的理解正确,您想知道每次您的数据“显示”给最终用户的时间吗?您可以使用存储过程来运行您的 select 语句(获取数据),但作为第二条语句运行插入到带有时间戳和您感兴趣的任何信息的日志表中。

CREATE PROC get_data
AS
BEGIN

    INSERT INTO log_table(timestamp,info1,info2)
    VALUES (GETDATE(), info1, info2)

    SELECT col1,col2
    FROM my_data

END
GO

类似的东西。

【讨论】:

  • 嗨,Ruslan,我正在开发将近 15 年的非常大的软件。我什至不知道这个软件从多少地方运行选择查询。所以我需要这个表上的一种外部日志系统。上述解决方案对我不起作用。
  • 我明白了,那么您可能会通过查看索引统计信息(希望您有一些聚集的统计信息)并每隔一段时间重新设置(或收集它们)来获得一些想法@ 987654321@
  • 索引未在该数据库上完成。是的,这很愚蠢,但在我的情况下是真的。
  • 您可以使用分析器来跟踪它,但我不建议在生产中这样做,因为它对服务器来说很重。
猜你喜欢
  • 2020-05-04
  • 2019-07-19
  • 2023-03-23
  • 2016-03-25
  • 2012-12-03
  • 1970-01-01
  • 2014-01-03
  • 1970-01-01
  • 2021-08-12
相关资源
最近更新 更多