代码之家  ›  专栏  ›  技术社区  ›  Robin

SQL Server阻止“创建函数…”,这意味着什么?

  •  0
  • Robin  · 技术社区  · 15 年前

    我使用了本文中的sql https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/datacenter/?p=275

    谢谢你的帮助,

    罗宾

    1 回复  |  直到 9 年前
        1
  •  4
  •   Jonathan Kehayias    15 年前

    sys.dm_exec_sql_text() .

    下面是如何做到我上面所说的:

    SELECT 
        spid = r.session_id, 
        BlockingSPID = r.blocking_session_id, 
        DatabaseName = DB_NAME(r.database_id),
        s.program_name,
        s.login_name,
        ObjectName = OBJECT_NAME(st.objectid, st.dbid),
        Definition = SUBSTRING(st.text, (r.statement_start_offset/2)+1, 
            ((CASE r.statement_end_offset
              WHEN -1 THEN DATALENGTH(st.text)
             ELSE r.statement_end_offset
             END - r.statement_start_offset)/2) + 1)
    FROM sys.dm_exec_requests r
    JOIN sys.dm_exec_sessions s ON r.session_id = s.session_id
    CROSS APPLY sys.dm_exec_sql_text (sql_handle) st
    WHERE r.session_id > 50
    

    输出会有所不同,因为只有当前正在执行的请求在dm_exec_requests DMV中,其中sysprocesss显示每个spid,无论是否执行。您可以使用上面的代码找到阻塞语句。