如何獲取您的使用情況統計信息 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 年,則此方法無效。此腳本的輸出顯示 3 個欄位。第一個欄位提供資料庫名稱資訊。這是我們的關鍵字段,因為它有助於我們確定目標資料庫是否正在使用。第二個欄位有助於我們將資料庫連線分類為使用者連線或其他連線。 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事件探查器該方法在識別數據庫使用情況方面非常強大,但是非常耗費資源。 是的,我們談論的是探查器。 從Profiler中選擇一個模板,或使用自定義模板並跟踪數據庫連接。

刪除數據庫

刪除數據庫從上面列出的方法中,您將能夠確定數據庫是否仍在使用中。 如果您得出的結論是不再使用它,則最佳實踐是通知各個團隊將其從服務器中刪除。 晴天時,請對該未使用的數據庫進行完整備份,然後將其從服務器中刪除。 必須注意不要 腐敗 SQL Server db 在這個過程中。

作者簡介:

Neil Varley是的數據恢復專家 DataNumen,Inc.是數據恢復技術的全球領導者,包括 修復Outlook PST數據錯誤 和excel恢復軟件產品。 欲了解更多信息,請訪問 萬維網。datanumen.COM

立即分享:

評論被關閉。