Când se lucrează într-un foarte mare SQL Server mediu, este foarte comun ca nimeni din organizație să nu știe cine folosește o anumită bază de date. Acest scenariu este foarte frecvent dacă există mai multe sisteme vechi. Urmați acest articol pentru a identifica cât de eficient sunteți SQL Server sunt folosite baze de date.
Metoda 1:
În această metodă, vom citi rezultatul sp_who2 și o vom captura într-un tabel. Primul pas este să creați tabelul folosind acest script.
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() );
Programați și executați acest script ca a SQL Server Lucru. Putem revizui tabelul de jurnal oricând pentru a identifica dacă baza noastră de date țintă este utilizată.
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:
Spre deosebire de metoda de mai sus, dacă nu sunteți interesat de prea multe detalii și doriți doar să știți dacă baza de date este în uz sau nu, atunci acest script este cel mai potrivit. Dacă utilizați SQL Server cu o versiune mai veche de 2014, atunci acest lucru nu va funcționa. Rezultatul acestui script arată 3 câmpuri. Primul câmp oferă informații despre numele bazei de date. Acesta este câmpul cheie pentru noi, deoarece ne va ajuta să identificăm dacă baza de date țintă este utilizată. Al doilea câmp ne va ajuta să clasificăm conexiunile la baza de date ca conexiuni utilizator vs. conexiuni SQL Server conexiuni interne. Ultima coloană listează numărul de conexiuni la baza de date.
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:
Înainte de a introduce datele în tabelul de jurnal, în metoda 1, nu putem face un filtru pe numele bazei de date. Cu toate acestea, este posibil în Metoda 2 și Metoda 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:

Eliminați baza de date

Introducerea autorului:
Neil Varley este un expert în recuperarea datelor DataNumen, Inc., care este lider mondial în tehnologiile de recuperare a datelor, inclusiv reparați eroarea de date pst din Outlook și produse software de recuperare Excel. Pentru mai multe informații vizitați www.datanumen.com