Kun käsitellään muun muassa tietokantoja, tietojen käsittelyä ja sovelluskehitystä, on usein tarpeen jäljittää viimeksi suoritettu kysely. Tämän aiheen perusteellinen ymmärtäminen auttaa kehittäjiä paitsi virheenkorjauksessa myös parantamaan sovellusten yleistä suorituskykyä. Tässä artikkelissa tarkastellaan, kuinka voit noutaa viimeisen suoritetun kyselyn SQL-palvelimella Transact-SQL:n avulla.
SQL Server Profilerin ymmärtäminen
SQL Server Profiler on tehokas työkalu, joka tallentaa SQL Server -tapahtumat palvelimelta. Se tarkkailee SQL Serverin tietokantaa ja esiintymiä suoritettujen toimintojen ja toimintojen varalta. Yksi esimerkki tästä toiminnasta on viimeksi suoritetun kyselyn jäljitys. Näiden tietojen kaappaamiseen SQL Server Profiler käyttää SQL Tracea, jota myös muut sovellukset, kuten Ohjattu hakemiston viritystoiminto.
-- Typical structure of a SQL Server Query capture SELECT text FROM sys.dm_exec_sql_text( ( SELECT MAX( request_id ) FROM sys.dm_exec_requests where command = 'SQL Trace' ) )
Viimeksi suoritetun kyselyn purkaminen
Poimiaksesi viimeksi suoritettu kysely, meidän on ensin avattava dynaaminen hallintanäkymä: sys.dm_exec_requests. Tämä näkymä sisältää tiedot jokaisesta SQL Serverissä suoritetusta pyynnöstä. Voimme käyttää "SQL Trace" -komentoa suodattaaksemme ja saadakseen viimeisimmän suoritetun kyselyn erityisen pyyntötunnuksen.
-- The SQL Query to get the last executed query
SELECT text
FROM sys.dm_exec_sql_text(
( SELECT TOP 1 request_id
FROM sys.dm_exec_requests
ORDER BY start_time DESC)
)
Dynaamisen hallintanäkymän (DMV) ymmärtäminen
- Dynaaminen hallintanäkymä (DMV) antaa sinulle palvelimen tilatietoja, joiden avulla voit seurata palvelinesiintymän tilaa, diagnosoida ongelmia ja säätää suorituskykyä.
Yllä olevassa kyselyssä käytimme DMV:tä: sys.dm_exec_sql_text joka palauttaa suoritettavan SQL-erän tekstin. On tärkeää ymmärtää, että tämä näkymä tarjoaa tietoja vain palvelimen nykyisestä SQL-käskystä, joten sitä käytetään usein yhdessä sys.dm_exec_requests palauttaaksesi tiettyjä tietoja.
Vaiheittainen koodin selitys
Tarkastellaanpa yllä käytettyä kyselyä:
- Käytämme DMV:tä sys.dm_exec_requests saadaksesi kaikkien suoritettavien kyselyjen pyyntötunnuksen.
- Järjestämme nämä pyynnöt alkamisajan mukaan laskevassa järjestyksessä ja valitsemme ensimmäisen. Tämä antaa meille viimeksi suoritetun kyselyn.
- Välitämme tämän pyyntötunnuksen toiselle DMV:lle sys.dm_exec_sql_text joka palauttaa tätä tunnusta vastaavan SQL-erän tekstin.
SELECT TOP 1 request_id FROM sys.dm_exec_requests ORDER BY start_time DESC
SELECT text FROM sys.dm_exec_sql_text(<request_id>)
On tärkeää huomata, että käyttäjällä on oltava VIEW SERVER STATE -oikeus näiden tietojen kyselyyn. Tämä voidaan myöntää käyttämällä:
GRANT VIEW SERVER STATE TO <user_name>;
