Semasa bekerja di tempat yang sangat besar SQL Server persekitaran, sangat umum bahawa tidak ada seorang pun dalam organisasi yang mengetahui siapa yang menggunakan pangkalan data tertentu. Senario ini sangat biasa jika terdapat banyak sistem warisan. Ikuti artikel ini untuk mengenal pasti seberapa berkesan anda SQL Server pangkalan data digunakan.
Kaedah 1:
Dalam kaedah ini, kita akan membaca output sp_who2 dan menangkapnya dalam jadual. Langkah pertama adalah membuat jadual menggunakan skrip ini.
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() );
Jadualkan dan laksanakan skrip ini sebagai SQL Server Kerja. Kita boleh menyemak jadual log pada bila-bila masa untuk mengenal pasti sama ada pangkalan data sasaran kita sedang digunakan.
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;
Kaedah 2:
Tidak seperti kaedah di atas, jika anda tidak terlalu berminat dengan perincian dan hanya ingin mengetahui sama ada pangkalan data digunakan atau tidak, maka skrip ini paling sesuai. Sekiranya anda menggunakan SQL Server dengan versi yang lebih lama daripada 2014, maka ini tidak akan berfungsi. Output skrip ini menunjukkan 3 medan. Medan pertama memberikan maklumat tentang nama pangkalan data. Ini adalah medan utama bagi kami kerana ini akan membantu kami mengenal pasti sama ada pangkalan data sasaran kami sedang digunakan. Medan kedua akan membantu kami mengklasifikasikan sambungan ke pangkalan data sebagai sambungan pengguna vs. SQL Server hubungan dalaman. Lajur terakhir menyenaraikan jumlah sambungan ke pangkalan data.
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;
Kaedah 3:
Sebelum memasukkan data ke dalam jadual log, dalam kaedah 1, kita tidak dapat melakukan penapis pada nama pangkalan data. Walau bagaimanapun, ini mungkin berlaku dalam Kaedah 2 dan Kaedah 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;
Kaedah 4:

Keluarkan pangkalan data

Pengenalan Pengarang:
Neil Varley adalah pakar pemulihan data di DataNumen, Inc., yang merupakan pemimpin dunia dalam teknologi pemulihan data, termasuk membaiki ralat data pst Outlook dan produk perisian pemulihan yang unggul. Untuk maklumat lebih lanjut, lawati www.datanumen.com