您的位置:首页 > 博客中心 > 数据库 >

SQL Server 得到SPID,唯一的sessionID

时间:2022-03-10 17:19

     像.net中的session一样,如果能知道了数据库中的sessionID,那所有的操作都能知道了,因为有了这个唯一的身份识别的标识。

     可以做的事情有很多,如:当前哪个用户在做什么操作,在执行什么sql, 又如一个比较大的逻辑中要分别执行很多存储过程,

    在执行这些存储过程的过程当中,你想知道当前执行的进度,SQLServer正在执行哪个段sql语句,那么通过sessionID是很容易

   就得到这些信息的。

  SQL Server 得到SPID,唯一的sessionID:

    SELECT @@SPID

    以前我一直不知道,最近又装了SQLServer2014,发现每开一个Query 界面就有一个ID出来。我就特别想知道怎么取sessionID.

下面的存储过程是用来查看哪些sessionID正在执行什么操作。

create PROC [dbo].[dba_WhatSQLIsExecuting]
AS

BEGIN
-- Do not lock anything, and do not get held up by any locks.
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED


-- What SQL Statements Are Currently Running?
SELECT [Spid] = session_Id
, ecid
, [Database] = DB_NAME(sp.dbid)
, [User] = nt_username
, [Status] = er.status
, [Wait] = wait_type
, [Individual Query] = SUBSTRING (qt.text,
er.statement_start_offset/2,
(CASE WHEN er.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE er.statement_end_offset END -
er.statement_start_offset)/2)
,[Parent Query] = qt.text
, Program = program_name
, Hostname
, nt_domain
, start_time
FROM sys.dm_exec_requests er
INNER JOIN sys.sysprocesses sp ON er.session_id = sp.spid
CROSS APPLY sys.dm_exec_sql_text(er.sql_handle)as qt
WHERE session_Id > 50 -- Ignore system spids.
AND session_Id NOT IN (@@SPID) -- Ignore this current statement.
--and DB_NAME(sp.dbid)=‘RangeCheckTool‘
ORDER BY 1, 2
END

    还可以参考下面的文章:

   http://www.mssqltips.com/sqlservertip/1799/identify-last-statement-run-for-a-specific-sql-server-session/

   

The handle itself does not really do much for us without the function call that rationalizes it into the original query text.  As you can see though, this very simple query does provide us with yet another option for returning information on what users are (or have been) doing on the SQL Server instances we support.

Next Steps

  • The Dynamic Management Objects have so much to offer the DBA.   from MSSQLTips.com.
  • Read more tips by the author .
  • Still interested in information on sysprocesses, whether as a system table (pre-SQL 2005) or system view?  Here are some  that meet your needs.

 

SQL Server 得到SPID,唯一的sessionID,布布扣,bubuko.com

热门排行

今日推荐

热门手游