Jak získat statistiku využití vašeho SQL Server Databáze

Sdílej nyní:

Při práci ve velmi velkém SQL Server prostředí, je velmi běžné, že nikdo v organizaci neví, kdo používá konkrétní databázi. Tento scénář je velmi běžný, pokud existuje více starších systémů. Postupujte podle tohoto článku a zjistěte, jak efektivně vaše SQL Server používají se databáze.

Metoda 1:

V této metodě budeme číst výstup sp_who2 a zachytit jej v tabulce. Prvním krokem je vytvoření tabulky pomocí tohoto skriptu.

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()
    );

Naplánujte a spusťte tento skript jako SQL Server Úloha. Tabulku protokolů můžeme kdykoli zkontrolovat a zjistit, zda se naše cílová databáze používá.

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;

Metoda 2:

Na rozdíl od výše uvedené metody, pokud vás nezajímá příliš mnoho podrobností a chcete pouze vědět, zda se databáze používá nebo ne, pak je tento skript nejvhodnější. Pokud používáte SQL Server s verzí starší než 2014 to nebude fungovat. Výstup tohoto skriptu zobrazuje 3 pole. První pole obsahuje informace o názvu databáze. Toto je pro nás klíčové pole, protože nám pomůže zjistit, zda je naše cílová databáze používána. Druhé pole nám pomůže klasifikovat připojení k databázi jako uživatelská připojení vs. SQL Server vnitřní připojení. V posledním sloupci je uveden počet připojení k databázi.

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;

Metoda 3:

Před odesláním dat do tabulky protokolu v metodě 1 nemůžeme udělat filtr na název databáze. Je to však možné u metody 2 a metody 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;

Metoda 4:

Profiler SQLTato metoda je velmi účinná při identifikaci využití databáze, ale je velmi náročná na zdroje. Ano, mluvíme o profileru. Vyberte šablonu z Profiler nebo použijte vlastní šablonu a sledujte připojení k databázi.

Odeberte databázi

Odebrat databáziZ výše uvedených metod budete schopni zjistit, zda je vaše databáze stále používána nebo ne. Pokud dospějete k závěru, že se již nepoužívá, je nejlepší informovat příslušné týmy, že bude ze serveru odstraněn. V hezký den si vezměte CELOU zálohu této nepoužívané databáze a přetáhněte ji ze serveru. Je třeba dávat pozor, aby tomu tak nebylo zkažený SQL Server db během tohoto procesu.

Úvod autora:

Neil Varley je odborníkem na obnovu dat DataNumen, Inc., která je světovým lídrem v oblasti technologií pro obnovu dat, včetně opravit chybu dat pst aplikace Outlook a excelové softwarové produkty pro obnovu. Pro více informací navštivte www.datanumen.com

Sdílej nyní:

Komentáře jsou uzavřeny.