Cuando se trabaja en un SQL Server entorno, es muy común que nadie en la organización sepa quién usa una base de datos en particular. Este escenario es muy común si hay varios sistemas heredados. Siga este artículo para identificar la eficacia de su SQL Server se utilizan bases de datos.
Método 1:
En este método, vamos a leer la salida de sp_who2 y capturarla en una tabla. El primer paso es crear la tabla usando este 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() );
Programe y ejecute este script como SQL Server Trabajo. Podemos revisar la tabla de registro en cualquier momento para identificar si nuestro tarse está utilizando get database.
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étodo 2:
A diferencia del método anterior, si no está interesado en demasiados detalles y solo desea saber si la base de datos está en uso o no, este script es el que mejor se ajusta. Si estás usando SQL Server con una versión anterior a 2014, esto no funcionará. La salida de este script muestra 3 campos. Los primeros campos dan información sobre el nombre de la base de datos. Este es el campo clave para nosotros, ya que nos ayudará a identificar si nuestro target database está en uso. El segundo campo nos ayudará a clasificar las conexiones a la base de datos como conexiones de usuario vs. SQL Server Conexiones internas. La última columna muestra el recuento de conexiones a la base de datos.
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étodo 3:
Antes de enviar los datos a la tabla de registro, en el método 1, no podemos filtrar el nombre de la base de datos. Sin embargo, es posible en el Método 2 y el Método 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étodo 4:

Quitar la base de datos

Introducción del autor:
Neil Varley es un experto en recuperación de datos en DataNumen, Inc., que es el líder mundial en tecnologías de recuperación de datos, incluyendo reparar error de datos pst de Outlook y productos de software de recuperación de Excel. Para más información visite www.datanumen.com