【问题标题】:How to get session length in minute in SQL Server如何在 SQL Server 中以分钟为单位获取会话长度
【发布时间】:2012-08-20 14:54:02
【问题描述】:

在我的过程中使用以下查询,我可以算到连接到我的数据库

SELECT 
    COUNT(dbid) as 'Total Connections'
FROM 
    master.dbo.sysprocesses WITH (nolock)
WHERE 
    dbid = 7 

这工作正常,有什么方法可以在几分钟内获得每个连接/会话的长度?

【问题讨论】:

    标签: sql sql-server-2008 connection-pooling sql-session-state


    【解决方案1】:

    如果你这样做:

    SELECT DATEDIFF(n, login_time, GETDATE()) AS SessionTime
    FROM master.dbo.sysprocesses WITH (nolock)
    WHERE dbid =7
    

    您将获得login_time 和现在之间的时间差(以分钟为单位),我认为这是会话时间。

    注意这一点:

    如果返回值超出 int 的范围(-2,147,483,648 到 +2,147,483,647),返回错误。 对于毫秒,startdate 和 enddate 之间的最大差异是 24 天、20 小时、31 分 23.647 秒。第二,最大差异为68 年。

    从这里:http://msdn.microsoft.com/en-us/library/ms189794.aspx

    注意:您应该没问题,因为您要求连接的分钟数不太可能很快溢出!

    【讨论】:

    • 好吧,他不必担心 SQL Server 连接的 datediff 分钟数限制。
    • 确实如此 ;-) 但对于其他毫秒或类似时间之后的人来说,这可能是值得注意的。
    猜你喜欢
    • 2015-10-09
    • 2017-10-05
    • 2010-09-26
    • 2015-01-15
    • 2016-10-23
    • 2021-12-01
    • 1970-01-01
    • 2014-10-04
    相关资源
    最近更新 更多