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:

Odeberte databázi

Ú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