Sådan får du din brugsstatistik SQL Server Databaser

Når du arbejder i en meget stor SQL Server miljø, er det meget almindeligt, at ingen i organisationen ved, hvem der bruger en bestemt database. Dette scenario er meget almindeligt, hvis der er flere ældre systemer. Følg denne artikel for at identificere, hvor effektivt din SQL Server databaser bruges.

Metode 1:

I denne metode skal vi læse output af sp_who2 og fange det i en tabel. Det første trin er at oprette tabellen ved hjælp af dette 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()
    );

Planlæg og udfør dette script som en SQL Server Job. Vi kan til enhver tid gennemgå logtabellen for at identificere, om vores måldatabase bliver brugt.

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;

Metode 2:

I modsætning til ovenstående metode, hvis du ikke er interesseret i for mange detaljer og bare vil vide, om databasen er i brug eller ej, så er dette script den bedste pasform. Hvis du bruger SQL Server med en version ældre end 2014, så vil dette ikke virke. Outputtet fra dette script viser 3 felter. Det første felt giver information om databasenavnet. Dette er nøglefeltet for os, da det vil hjælpe os med at identificere, om vores måldatabase er i brug. Det andet felt vil hjælpe os med at klassificere forbindelserne til databasen som brugerforbindelser vs. SQL Server interne forbindelser. Den sidste kolonne viser antallet af forbindelser til databasen.

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;

Metode 3:

Før vi skubber dataene ind i logtabellen, i metode 1, kan vi ikke lave et filter på databasenavnet. Det er dog muligt i metode 2 og metode 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;

Metode 4:

SQL-profilDenne metode er meget effektiv til at identificere databasebrugen, men den er meget ressourceintensiv. Ja, vi taler om profiler. Vælg en skabelon fra Profiler, eller brug en brugerdefineret skabelon, og følg databaseforbindelser.

Fjern databasen

Fjern databasenFra ovennævnte metoder kan du identificere, om din database stadig bruges eller ej. Hvis du kommer til en konklusion, at det ikke bruges mere, er den bedste praksis at informere de respektive hold om, at det vil blive fjernet fra serveren. På en smuk dag skal du tage en FULD backup af denne ubrugte database og slippe den fra serveren. Der skal udvises forsigtighed for ikke at korrupt SQL Server db under denne proces.

Forfatter Introduktion:

Neil Varley er en datagendannelsesekspert i DataNumen, Inc., som er verdens førende inden for datagendannelsesteknologier, herunder reparere Outlook pst data fejl og excel-genopretningssoftwareprodukter. For mere information besøg www.datanumen.com

Kommentarer er lukket.