Lorsque vous travaillez dans un très grand SQL Server environnement, il est très courant que personne dans l'organisation ne sache qui utilise une base de données particulière. Ce scénario est très courant s'il existe plusieurs systèmes hérités. Suivez cet article pour déterminer l'efficacité de votre SQL Server bases de données sont utilisées.
Méthode 1:
Dans cette méthode, nous allons lire la sortie de sp_who2 et la capturer dans une table. La première étape consiste à créer la table à l'aide de ce 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() );
Planifiez et exécutez ce script en tant que SQL Server Tâche. Nous pouvons consulter le tableau de journalisation à tout moment pour identifier si notre base de données cible est utilisée.
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;
Méthode 2:
Contrairement à la méthode ci-dessus, si vous n'êtes pas intéressé par trop de détails et que vous vouliez simplement savoir si la base de données est utilisée ou non, alors ce script est le mieux adapté. Si vous utilisez SQL Server Si votre version est antérieure à 2014, cette méthode ne fonctionnera pas. Le résultat de ce script affiche trois champs. Le premier champ indique le nom de la base de données. Ce champ est essentiel car il nous permet de déterminer si notre base de données cible est utilisée. Le deuxième champ nous aide à classer les connexions à la base de données en connexions utilisateur et connexions réseau. SQL Server connexions internes. La dernière colonne répertorie le nombre de connexions à la base de données.
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;
Méthode 3:
Avant de pousser les données dans la table de journal, dans la méthode 1, nous ne pouvons pas filtrer le nom de la base de données. Cependant, cela est possible dans la méthode 2 et la méthode 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;
Méthode 4:

Supprimer la base de données

Introduction de l'auteur:
Neil Varley est un expert en récupération de données dans DataNumen, Inc., qui est le leader mondial des technologies de récupération de données, y compris réparer l'erreur de données Outlook pst et des produits logiciels de récupération Excel. Pour plus d'informations, visitez www.datanumen.com