복붙노트

[SQL] 어떻게 활성 SQL Server 연결을 볼 수 있습니까?

SQL

어떻게 활성 SQL Server 연결을 볼 수 있습니까?

나는 SQL 서버 2008 엔터프라이즈를 사용하고 있습니다. 나는 활성 SQL Server 연결을보고 싶어하고, 같은 모든 연결의 관련 정보를 어떤에서 접속 IP 주소, 어떤 데이터베이스 또는 뭔가.

거기에이 문제를 해결하기 위해 명령을 기존 있습니까?

해결법

  1. ==============================

    1.당신은 sp_who를 저장 프로 시저를 사용할 수 있습니다.

    당신은 sp_who를 저장 프로 시저를 사용할 수 있습니다.

  2. ==============================

    2.

    SELECT 
        DB_NAME(dbid) as DBName, 
        COUNT(dbid) as NumberOfConnections,
        loginame as LoginName
    FROM
        sys.sysprocesses
    WHERE 
        dbid > 0
    GROUP BY 
        dbid, loginame
    ;
    

    또한 sys.sysprocesses에 대한 Microsoft 설명서를 참조하십시오.

  3. ==============================

    3.그렇다 sp_who에에서, 당신은 또한 당신에게 더 자세한 정보를 제공하는 "문서화"sp_who2 시스템 저장 프로 시저를 사용할 수 있습니다. sp_who를하고 sp_who2의 차이를 참조하십시오.

    그렇다 sp_who에에서, 당신은 또한 당신에게 더 자세한 정보를 제공하는 "문서화"sp_who2 시스템 저장 프로 시저를 사용할 수 있습니다. sp_who를하고 sp_who2의 차이를 참조하십시오.

  4. ==============================

    4.도구 모음에서 "활동 모니터"아이콘을 클릭합니다 ...

    도구 모음에서 "활동 모니터"아이콘을 클릭합니다 ...

    토르스텐 님의 댓글에서 :

    SQL Server Management Studio를 서버에서 마우스 오른쪽 버튼을 클릭에서 Ctrl + Alt + A의 바로 가기 상황에 맞는 메뉴 또는 - 키보드에서 "작업 모니터"를 선택

  5. ==============================

    5.다음은 내 스크립트가 데이터베이스에 연결된 모든 세션을 찾기 위해 그 세션이 어떤 I / O를 수행하는 경우 확인하실 수 있습니다 그들을 죽일 수있는 옵션이 있습니다.

    다음은 내 스크립트가 데이터베이스에 연결된 모든 세션을 찾기 위해 그 세션이 어떤 I / O를 수행하는 경우 확인하실 수 있습니다 그들을 죽일 수있는 옵션이 있습니다.

    또한 스크립트 쇼 각 세션의 상태를 표시합니다.

    보고는 아래.

    --==============================================================================
    -- See who is connected to the database.
    -- Analyse what each spid is doing, reads and writes.
    -- If safe you can copy and paste the killcommand - last column.
    -- Marcelo Miorelli
    -- 18-july-2017 - London (UK)
    -- Tested on SQL Server 2016.
    --==============================================================================
    USE master
    go
    SELECT
         sdes.session_id
        ,sdes.login_time
        ,sdes.last_request_start_time
        ,sdes.last_request_end_time
        ,sdes.is_user_process
        ,sdes.host_name
        ,sdes.program_name
        ,sdes.login_name
        ,sdes.status
    
        ,sdec.num_reads
        ,sdec.num_writes
        ,sdec.last_read
        ,sdec.last_write
        ,sdes.reads
        ,sdes.logical_reads
        ,sdes.writes
    
        ,sdest.DatabaseName
        ,sdest.ObjName
        ,sdes.client_interface_name
        ,sdes.nt_domain
        ,sdes.nt_user_name
        ,sdec.client_net_address
        ,sdec.local_net_address
        ,sdest.Query
        ,KillCommand  = 'Kill '+ CAST(sdes.session_id  AS VARCHAR)
    FROM sys.dm_exec_sessions AS sdes
    
    INNER JOIN sys.dm_exec_connections AS sdec
            ON sdec.session_id = sdes.session_id
    
    CROSS APPLY (
    
        SELECT DB_NAME(dbid) AS DatabaseName
            ,OBJECT_NAME(objectid) AS ObjName
            ,COALESCE((
                SELECT TEXT AS [processing-instruction(definition)]
                FROM sys.dm_exec_sql_text(sdec.most_recent_sql_handle)
                FOR XML PATH('')
                    ,TYPE
                ), '') AS Query
    
        FROM sys.dm_exec_sql_text(sdec.most_recent_sql_handle)
    
    ) sdest
    WHERE sdes.session_id <> @@SPID
      AND sdest.DatabaseName ='yourdatabasename'
    --ORDER BY sdes.last_request_start_time DESC
    
    --==============================================================================
    
  6. ==============================

    6.나는 당신이 어떤 결과를 조회 할 수 있음을 함께 그래서이 던져

    나는 당신이 어떤 결과를 조회 할 수 있음을 함께 그래서이 던져

    Declare @dbName varchar(150)
    set @dbName = '[YOURDATABASENAME]'
    
    --Total machine connections
    --SELECT  COUNT(dbid) as TotalConnections FROM sys.sysprocesses WHERE dbid > 0
    
    --Available connections
    DECLARE @SPWHO1 TABLE (DBName VARCHAR(1000) NULL, NoOfAvailableConnections VARCHAR(1000) NULL, LoginName VARCHAR(1000) NULL)
    INSERT INTO @SPWHO1 
        SELECT db_name(dbid), count(dbid), loginame FROM sys.sysprocesses WHERE dbid > 0 GROUP BY dbid, loginame
    SELECT * FROM @SPWHO1 WHERE DBName = @dbName
    
    --Running connections
    DECLARE @SPWHO2 TABLE (SPID VARCHAR(1000), [Status] VARCHAR(1000) NULL, [Login] VARCHAR(1000) NULL, HostName VARCHAR(1000) NULL, BlkBy VARCHAR(1000) NULL, DBName VARCHAR(1000) NULL, Command VARCHAR(1000) NULL, CPUTime VARCHAR(1000) NULL, DiskIO VARCHAR(1000) NULL, LastBatch VARCHAR(1000) NULL, ProgramName VARCHAR(1000) NULL, SPID2 VARCHAR(1000) NULL, Request VARCHAR(1000) NULL)
    INSERT INTO @SPWHO2 
        EXEC sp_who2 'Active'
    SELECT * FROM @SPWHO2 WHERE DBName = @dbName
    
  7. ==============================

    7.은 "죽"명령의 사용을 설명하는 MS의 쿼리는 연결의 정보를 제공하는 매우 유용합니다 :

    은 "죽"명령의 사용을 설명하는 MS의 쿼리는 연결의 정보를 제공하는 매우 유용합니다 :

    SELECT conn.session_id, host_name, program_name,
        nt_domain, login_name, connect_time, last_request_end_time 
    FROM sys.dm_exec_sessions AS sess
    JOIN sys.dm_exec_connections AS conn
       ON sess.session_id = conn.session_id;
    

    HTH, 감사합니다,

  8. ==============================

    8.다음 T-SQL 명령을 수행 할 수 있습니다 :

    다음 T-SQL 명령을 수행 할 수 있습니다 :

    SELECT * FROM sys.dm_exec_sessions WHERE status = 'running';
    
  9. from https://stackoverflow.com/questions/1248423/how-do-i-see-active-sql-server-connections by cc-by-sa and MIT license