При роботі в дуже великих 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:

Видаліть базу даних

Вступ автора:
Ніл Варлі - фахівець з відновлення даних у DataNumen, Inc., яка є світовим лідером у галузі технологій відновлення даних, в тому числі відновити помилку даних pst - - та програмні продукти Excel для відновлення. Для отримання додаткової інформації відвідайте WWW.datanumen.com