Ao trabalhar em uma área muito grande SQL Server ambiente, é muito comum que ninguém na organização saiba quem utiliza determinada base de dados. Esse cenário é muito comum se houver vários sistemas legados. Siga este artigo para identificar com que eficiência seu SQL Server bancos de dados são usados.
Método 1:
Neste método, vamos ler a saída de sp_who2 e capturá-la em uma tabela. O primeiro passo é criar a tabela 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() );
Agende e execute este script como um SQL Server Trabalho. Podemos consultar a tabela de logs a qualquer momento para identificar se o nosso banco de dados alvo está sendo utilizado.
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:
Ao contrário do método acima, se você não estiver interessado em muitos detalhes e apenas quiser saber se o banco de dados está em uso ou não, esse script é o mais adequado. Se você estiver usando SQL Server Se a versão do script for anterior a 2014, este método não funcionará. O resultado do script exibe três campos. O primeiro campo fornece informações sobre o nome do banco de dados. Este é o campo principal, pois nos ajudará a identificar se o banco de dados de destino está em uso. O segundo campo nos ajudará a classificar as conexões com o banco de dados como conexões de usuário ou conexões de terceiros. SQL Server conexões internas. A última coluna lista a contagem de conexões com o banco de dados.
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 os dados para a tabela de log, no método 1, não podemos fazer um filtro no nome do banco de dados. No entanto, é possível no Método 2 e no 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:

Remover o banco de dados

Introdução do autor:
Neil Varley é um especialista em recuperação de dados em DataNumen, Inc., líder mundial em tecnologias de recuperação de dados, incluindo reparar erro de dados pst do Outlook e produtos de software de recuperação do Excel. Para mais informações visite www.datanumen.com