So erhalten Sie die Nutzungsstatistik Ihres SQL Server Datenbanken

Jetzt teilen:

Bei der Arbeit in einem sehr großen SQL Server Umgebung ist es sehr häufig, dass niemand in der Organisation weiß, wer eine bestimmte Datenbank verwendet. Dieses Szenario ist sehr häufig, wenn mehrere Legacy-Systeme vorhanden sind. Befolgen Sie diesen Artikel, um festzustellen, wie effektiv Ihre SQL Server Datenbanken werden verwendet.

Methode 1:

Bei dieser Methode lesen wir die Ausgabe von sp_who2 und erfassen sie in einer Tabelle. Der erste Schritt besteht darin, die Tabelle mit diesem Skript zu erstellen.

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

Planen und führen Sie dieses Skript als aus SQL Server Job. Wir können die Protokolltabelle jederzeit überprüfen, um festzustellen, ob unsere Zieldatenbank verwendet wird.

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;

Methode 2:

Im Gegensatz zur obigen Methode ist dieses Skript am besten geeignet, wenn Sie nicht an zu vielen Details interessiert sind und nur wissen möchten, ob die Datenbank verwendet wird oder nicht. Wenn Sie verwenden SQL Server Bei Versionen vor 2014 funktioniert dies nicht. Die Ausgabe dieses Skripts zeigt drei Felder. Das erste Feld enthält Informationen zum Datenbanknamen. Dies ist für uns das Schlüsselfeld, da wir so feststellen können, ob unsere Zieldatenbank verwendet wird. Das zweite Feld hilft uns, die Verbindungen zur Datenbank in Benutzerverbindungen und externe Verbindungen zu klassifizieren. SQL Server interne Verbindungen. In der letzten Spalte wird die Anzahl der Verbindungen zur Datenbank aufgeführt.

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;

Methode 3:

Bevor die Daten in die Protokolltabelle verschoben werden, können wir in Methode 1 keinen Filter für den Datenbanknamen durchführen. Dies ist jedoch in Methode 2 und Methode 3 möglich.

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;

Methode 4:

SQL-ProfilerDiese Methode ist sehr leistungsfähig bei der Identifizierung der Datenbanknutzung, jedoch sehr ressourcenintensiv. Ja, wir sprechen über Profiler. Wählen Sie eine Vorlage aus dem Profiler aus oder verwenden Sie eine benutzerdefinierte Vorlage und verfolgen Sie Datenbankverbindungen.

Entfernen Sie die Datenbank

Entfernen Sie die DatenbankAnhand der oben aufgeführten Methoden können Sie feststellen, ob Ihre Datenbank noch verwendet wird oder nicht. Wenn Sie zu dem Schluss kommen, dass es nicht mehr verwendet wird, sollten Sie die jeweiligen Teams darüber informieren, dass es vom Server entfernt wird. Erstellen Sie an einem schönen Tag eine vollständige Sicherung dieser nicht verwendeten Datenbank und löschen Sie sie vom Server. Es muss darauf geachtet werden, dies nicht zu tun korrupt SQL Server db während dieses Prozesses.

Einführung des Autors:

Neil Varley ist ein Experte für Datenwiederherstellung in DataNumen, Inc., das weltweit führend bei Datenwiederherstellungstechnologien ist, einschließlich Relook PST-Datenfehler reparieren und Excel-Wiederherstellungssoftwareprodukte. Für weitere Informationen besuchen Sie www.datanumen.com €XNUMX

Jetzt teilen:

Kommentare sind geschlossen.