귀하의 사용 통계를 얻는 방법 SQL Server 데이터베이스

지금 공유 :

매우 큰 작업을 할 때 SQL Server 환경에서 조직의 아무도 특정 데이터베이스를 사용하는 사람을 모르는 것은 매우 일반적입니다. 이 시나리오는 여러 레거시 시스템이있는 경우 매우 일반적입니다. 이 기사를 따라 귀하의 SQL Server 데이터베이스가 사용됩니다.

방법 1 :

이 방법에서는 sp_who2의 출력을 읽고이를 테이블에 캡처합니다. 첫 번째 단계는이 스크립트를 사용하여 테이블을 만드는 것입니다.

CREATE TABLE T1 (
    session_id INT
    ,status_message VARCHAR(1000) NULL
    ,login_name SYSNAME NULL
    ,Name_of_Host SYSNAME NULL
    ,Blocked_By SYSNAME NULL
    ,Database_Name SYSNAME NULL
    ,Script_description VARCHAR(1000) NULL
    ,CPU_Time INT NULL
    ,Disk_Input_Output INT NULL
    ,Last_Batch VARCHAR(1000) NULL
    ,Name_of_Program VARCHAR(1000) NULL
    ,Session_ID_2 INT
    ,ID_of_Request INT NULL
    ,Log_Date DATETIME DEFAULT GETDATE()
    );

이 스크립트를 SQL Server 작업. 우리는 언제든지 로그 테이블을 검토하여 대상 데이터베이스가 사용되고 있는지 확인할 수 있습니다.

INSERT INTO T1 (
    session_id
    ,status_message
    ,login_name
    ,Name_of_Host
    ,Blocked_By
    ,Database_Name
    ,Script_description
    ,CPU_Time
    ,Disk_Input_Output
    ,Last_Batch
    ,Name_of_Program
    ,Session_ID_2
    ,ID_of_Request
    )
EXECUTE sp_who2 active;

방법 2 :

위의 방법과 달리 세부 사항에 너무 관심이없고 데이터베이스가 사용 중인지 여부 만 알고 싶다면이 스크립트가 가장 적합합니다. 사용하는 경우 SQL Server 2014년 이전 버전에서는 이 스크립트가 작동하지 않습니다. 이 스크립트의 출력은 세 개의 필드를 보여줍니다. 첫 번째 필드는 데이터베이스 이름에 대한 정보를 제공합니다. 이 필드는 대상 데이터베이스가 사용 중인지 확인하는 데 중요한 역할을 합니다. 두 번째 필드는 데이터베이스 연결을 사용자 연결과 서버 연결로 분류하는 데 사용됩니다. SQL Server 내부 연결. 마지막 열에는 데이터베이스에 대한 연결 수가 나열됩니다.

SELECT DB_NAME(sys.dm_exec_sessions.database_id) AS [Database Name]
    ,CASE 
        WHEN sys.dm_exec_sessions.is_user_process = 1
            THEN 'YES'
        WHEN sys.dm_exec_sessions.is_user_process = 0
            THEN 'NO'
        END AS [Is it User connection?]
    ,COUNT(sys.dm_exec_sessions.session_id) AS [Connections Count]
FROM sys.dm_exec_sessions
GROUP BY DB_NAME(sys.dm_exec_sessions.database_id)
    ,sys.dm_exec_sessions.is_user_process
ORDER BY 1
    ,2;

방법 3 :

로그 테이블에 데이터를 푸시하기 전에 방법 1에서는 데이터베이스 이름에 대한 필터를 수행 할 수 없습니다. 그러나 방법 2와 방법 3에서 가능합니다.

SELECT t1.objtype AS [Object]
    ,t1.refcounts AS [ReferredCount]
    ,t1.usecounts AS [Usage]
    ,t1.size_in_bytes / 1024 AS [KB Size]
    ,db_name(t3.dbid) AS [DatabaseName]
FROM sys.dm_exec_cached_plans t1
OUTER APPLY sys.dm_exec_text_query_plan(plan_handle, 0, - 1) t2
OUTER APPLY sys.dm_exec_sql_text(plan_handle) AS t3
WHERE db_name(t3.dbid) = 'ERP10_SandBox'
ORDER BY t1.usecounts DESC;

방법 4 :

SQL 프로파일 러이 방법은 데이터베이스 사용량을 식별하는 데 매우 강력하지만 리소스를 많이 사용합니다. 예, 우리는 프로파일 러에 대해 이야기하고 있습니다. 프로파일 러에서 템플릿을 선택하거나 사용자 지정 템플릿을 사용하고 데이터베이스 연결을 추적합니다.

데이터베이스 제거

데이터베이스 제거위에 나열된 방법을 통해 데이터베이스가 여전히 사용 중인지 여부를 식별 할 수 있습니다. 더 이상 사용되지 않는다는 결론에 도달하면 가장 좋은 방법은 각 팀에 서버에서 제거 될 것임을 알리는 것입니다. 날씨가 좋은 날에는이 미사용 데이터베이스의 전체 백업을 수행하여 서버에서 삭제하십시오. 하지 않도록주의해야합니다. 부정한 SQL Server db 이 과정에서.

저자 소개 :

Neil Varley는 데이터 복구 전문가입니다. DataNumen, Inc.는 다음과 같은 데이터 복구 기술 분야의 세계적 리더입니다. Outlook pst 데이터 오류 복구 그리고 엑셀 복구 소프트웨어 제품. 자세한 내용은 WWW.datanumen.COM

지금 공유 :

댓글이 닫혀있다.