Kun työskentelet erittäin suuressa SQL Server On hyvin yleistä, että kukaan organisaatiossa ei tiedä, kuka käyttää tiettyä tietokantaa. Tämä skenaario on hyvin yleinen, jos vanhoja järjestelmiä on useita. Seuraa tätä artikkelia selvittääksesi, kuinka tehokkaasti olet SQL Server tietokantoja käytetään.
Menetelmä 1:
Tässä menetelmässä aiomme lukea sp_who2:n lähdön ja tallentaa sen taulukkoon. Ensimmäinen askel on luoda taulukko tällä skriptillä.
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() );
Ajoita ja suorita tämä komentosarja muodossa a SQL Server Job. Voimme tarkistaa lokitaulukon milloin tahansa selvittääksemme, onko meidän target-tietokanta on käytössä.
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;
Menetelmä 2:
Toisin kuin yllä oleva menetelmä, jos et ole kiinnostunut liian monista yksityiskohdista ja halusit vain tietää, onko tietokanta käytössä vai ei, tämä skripti sopii parhaiten. Jos käytät SQL Server jos versio on vanhempi kuin 2014, tämä ei toimi. Tämän skriptin tulos näyttää 3 kenttää. Ensimmäiset kentät antavat tietoa tietokannan nimestä. Tämä on meille avainkenttä, koska se auttaa meitä tunnistamaan, onko meidän target-tietokanta on käytössä. Toinen kenttä auttaa meitä luokittelemaan yhteydet tietokantaan käyttäjäyhteyksiksi vs SQL Server sisäiset liitännät. Viimeisessä sarakkeessa luetellaan tietokantaan olevien yhteyksien määrä.
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;
Menetelmä 3:
Ennen tietojen työntämistä lokitaulukkoon menetelmässä 1 emme voi tehdä suodatusta tietokannan nimelle. Se on kuitenkin mahdollista menetelmässä 2 ja menetelmässä 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;
Menetelmä 4:

Poista tietokanta

Tekijän esittely:
Neil Varley on tietojen palauttamisen asiantuntija DataNumen, Inc., joka on maailman johtava tietojen palautustekniikoissa, mukaan lukien korjaa Outlook pst -tietovirhe ja Excel-palautusohjelmistotuotteet. Lisätietoja osoitteessa www.datanumen.com