在一个非常大的地方工作时 SQL Server 环境中,组织中没有人知道谁使用特定数据库是很常见的。 如果有多个遗留系统,这种情况很常见。 按照这篇文章来确定你的效率如何 SQL Server 使用数据库。
方法1:
在此方法中,我们将读取 sp_who2 的输出并将其捕获到表中。 第一步是使用此脚本创建表。
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() );
安排并执行此脚本作为 SQL Server 任务。我们可以随时查看日志表,以确定目标数据库是否正在被使用。
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;
方法2:
与上述方法不同,如果您对太多细节不感兴趣,只想知道数据库是否正在使用,那么这个脚本是最合适的。 如果你使用 SQL Server 如果版本早于 2014 年,则此方法无效。此脚本的输出显示 3 个字段。第一个字段提供数据库名称信息。这是我们的关键字段,因为它有助于我们确定目标数据库是否正在使用。第二个字段有助于我们将数据库连接分类为用户连接或其他连接。 SQL Server 内部连接。 最后一列列出了与数据库的连接数。
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;
方法3:
在将数据推入日志表之前,在方法1中,我们不能对数据库名称进行过滤。 但是,在方法 2 和方法 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;
方法4:

删除数据库

作者简介:
Neil Varley 是一位数据恢复专家 DataNumen, Inc.,它是数据恢复技术领域的世界领先者,包括 修复 Outlook pst 数据错误 和 excel 恢复软件产品。 欲了解更多信息,请访问 datanumen.com