【问题标题】:How to find user activities on a particular database in SQL Server 2000如何在 SQL Server 2000 中查找特定数据库上的用户活动
【发布时间】:2013-07-14 11:28:33
【问题描述】:

哪个查询显示 SQL Server 2000 中特定数据库上的用户活动?我需要知道哪些所有用户都登录了其中一个数据库,还需要查看这些用户触发的查询

FUNCTION [dbo].[Show_my_process] (@SPID INT) 
returns VARCHAR(8000) 
AS 
  BEGIN 
      DECLARE @sql_handle   BINARY(20), 
              @handle_found BIT 
      DECLARE @stmt_start INT, 
              @stmt_end   INT 
      DECLARE @line     NVARCHAR(4000), 
              @wait_str VARCHAR(8) 
      DECLARE @sql_process AS VARCHAR(8000) 

      SELECT @sql_handle = sql_handle, 
             @stmt_start = stmt_start / 2, 
             @stmt_end = CASE 
                           WHEN stmt_end = -1 THEN -1 
                           ELSE stmt_end / 2 
                         END 
      FROM   master.dbo.sysprocesses 
      WHERE  spid = @spid 
             AND ecid = 0 

      SELECT @sql_process = Substring(text, COALESCE(NULLIF(@stmt_start, 0), 1),
                             CASE 
                                   @stmt_end 
                            WHEN -1 
                                   THEN 
                                   Datalength(text) 
                                   ELSE ( 
                                                  @stmt_end - @stmt_start ) 
                            END) 
      FROM   ::fn_get_sql(@sql_handle) 

      RETURN @sql_process 
  END  

SELECT dbo.SHOW_MY_PROCESS(SPID) 
FROM MASTER.DBO.SYSPROCESSES 
WHERE SPID > 50

如果我运行它,我会得到查询,但问题是我看不到其他用户运行的查询

【问题讨论】:

    标签: sql sql-server sql-server-2000 dts


    【解决方案1】:

    也许sp_who 这就是你要找的。​​p>

    USE master;
    GO
    EXEC sp_who 'active';
    GO
    

    【讨论】:

    • @user1254579 它返回cmd
    • 如何将用户运行的查询显示为列之一
    猜你喜欢
    • 2014-02-21
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    • 2012-12-18
    • 2011-06-18
    相关资源
    最近更新 更多