sql - SQL Server 查询以显示当前会话的最后活动时间
问题描述
后端:SQL Server 2017 Express
前端:Microsoft Access 2019 与 SQL Server 数据库的 ODBC 链接表
目标:检测当前会话中 30 分钟的不活动状态,然后退出 Access
我想要一个 SQL Server 查询(通过计时器从前端 Access 数据库调用),它将返回当前会话的最后一个 SQL 语句(例如 select/insert/update/delete)的日期/时间,以便 Access 应用程序可以在定义的不活动时间段后退出。
到目前为止,我已经查看了 sp_who、sp_who2、sysprocesses、dm_exec_connections、dm_db_index_usage_stats 和 dm_exec_sessions。
虽然这些返回看起来很有用的列,例如 LastBatch,但问题是查询数据库的行为会更新返回值。例如,如果我运行 sp_who2 并查看我的 SPID 的行,LastBatch 的值始终与 GetDate() 相同。
我知道如果我正在监视另一个会话(SPID),上面的选项会起作用,但我正在寻找一种方法来查找我自己的会话的上次活动时间(不包括 sp_who2 等)。
有什么建议么?
解决方案
您是正确的,最后请求时间是请求请求最后请求时间的时间。(必须这样写。)也许您应该检测 Access 是否空闲?搜索“如果空闲则自动关闭访问”有可喜的结果。
https://www.iaccessworld.com/set-program-close-automatically/
https://www.tek-tips.com/faqs.cfm?fid=1432
如果您绝对必须在 SQL Server 中进行检查,那么可能需要检查连接。如果连接空闲一段时间而没有打开的事务,它可以终止连接。我不知道访问连接是否显而易见,因为并非所有应用程序都提供它们的名称。我也不知道访问前端会如何响应。我对这样做持怀疑态度。
推荐阅读
- ruby - 在红宝石中交错两个枚举的最佳方法?
- reactjs - Pusher.js 从 React 客户端订阅和推送频道不起作用
- configuration - 使用 xml 配置在 infinispan 中建立索引
- c# - 我的列表
原点值更改时不更新 - deployment - 构建和部署时态工作流的最佳实践
- spring - 如何使用 Spring Batch 读取多个表
- alpine.js - Alpine JS:双向绑定转换的输入值?
- c# - 即使包含不记名令牌(由 IdentityServer4 生成),授权属性也会返回 401
- excel - 如何检测用户是否单击文件>>打印作为选项或使用 VBA 代码从 MS Word 或 Excel 中按 CTRL+P?
- spring-cloud-dataflow - scdf是如何实现多输出功能的?