Podczas pracy w bardzo dużym SQL Server środowiska, bardzo często w organizacji nikt nie wie, kto korzysta z danej bazy danych. Ten scenariusz jest bardzo powszechny, jeśli istnieje wiele starszych systemów. Postępuj zgodnie z tym artykułem, aby dowiedzieć się, jak skutecznie Twój SQL Server baz danych.
Metoda 1:
W tej metodzie będziemy odczytywać dane wyjściowe sp_who2 i przechwytywać je w tabeli. Pierwszym krokiem jest utworzenie tabeli za pomocą tego skryptu.
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() );
Zaplanuj i wykonaj ten skrypt jako plik SQL Server Zadanie. Możemy w każdej chwili przejrzeć tabelę dziennika, aby sprawdzić, czy nasza docelowa baza danych jest używana.
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:
W przeciwieństwie do powyższej metody, jeśli nie interesuje Cię zbyt wiele szczegółów i chciałbyś tylko wiedzieć, czy baza danych jest używana, czy nie, ten skrypt jest najlepszym rozwiązaniem. Jeśli używasz SQL Server W przypadku wersji starszej niż 2014, to nie zadziała. Wynik tego skryptu pokazuje 3 pola. Pierwsze pole zawiera informacje o nazwie bazy danych. Jest to dla nas kluczowe pole, ponieważ pomoże nam zidentyfikować, czy docelowa baza danych jest używana. Drugie pole pomoże nam sklasyfikować połączenia z bazą danych jako połączenia użytkowników, a nie… SQL Server połączenia wewnętrzne. Ostatnia kolumna zawiera liczbę połączeń z bazą danych.
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:
Przed wypchnięciem danych do tabeli dziennika w metodzie 1 nie możemy wykonać filtru na podstawie nazwy bazy danych. Jest to jednak możliwe w metodzie 2 i metodzie 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:

Usuń bazę danych

Wprowadzenie autora:
Neil Varley jest ekspertem w dziedzinie odzyskiwania danych w DataNumen, Inc., która jest światowym liderem w technologiach odzyskiwania danych, w tym Napraw błąd danych pst programu Outlook i doskonałe oprogramowanie do odzyskiwania. po więcej informacji odwiedź www.datanumen.com