Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
A megadott SQL-leíró SQL-utasításának szövegét adja vissza.
Fontos
Ez a funkció a Microsoft SQL Server egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását. Használja inkább a sys.dm_exec_sql_text. További információ: sys.dm_exec_sql_text (Transact-SQL).
Transact-SQL szintaxis konvenciók
Szemantika
sys.fn_get_sql ( SqlHandle )
Érvek
SqlHandle
A leíró értéke.
Az SqlHandlenem alapértelmezett varbinary(64).
Visszaadott táblák
| Oszlop név | Adattípus | Leírás |
|---|---|---|
| dbid | kisméretű | Adatbázis-azonosító. Alkalmi és előkészített SQL-utasítások esetén annak az adatbázisnak az azonosítója, amelyben az utasítások fordítása megtörtént. |
| objektumazonosító | Int | Az adatbázis-objektum azonosítója. Null érték az alkalmi SQL-utasításokhoz. |
| szám | kisméretű | A csoport számát jelzi, ha az eljárások csoportosítva vannak. 0 = A bejegyzések nem eljárások. NULL = Alkalmi SQL-utasítások. |
| Titkosított | bit | Azt jelzi, hogy az objektum titkosítva van-e. 0 = Nincs titkosítva 1 = Titkosított |
| szöveg | szöveg | Az SQL-utasítás szövege. Null értékű titkosított objektumok esetén. |
Megjegyzések
Érvényes SQL-leírót a sys.dm_exec_requests (Transact-SQL) dinamikus felügyeleti nézet sql_handle oszlopából szerezhet be.
Ha olyan leírót ad át, amely már nem létezik a gyorsítótárban, fn_get_sql üres eredményhalmazt ad vissza. Ha érvénytelen leírót ad át, a köteg leáll, és hibaüzenet jelenik meg.
Az SQL Server adatbázismotorja nem képes gyorsítótárba tárni néhány Transact-SQL utasítást, például a tömeges másolási utasításokat és a 8 KB-nál nagyobb sztringkonstansokat tartalmazó utasításokat. Az utasításokhoz tartozó leírók nem kérhetők le fn_get_sql használatával.
Az eredményhalmaz szövegoszlopa a jelszavakat tartalmazó szövegekre lesz szűrve. A nem figyelt, biztonsággal kapcsolatos tárolt eljárásokkal kapcsolatos további információkért tekintse meg a Nyomkövetés szűrése című témakört.
A fn_get_sql függvény a DBCC INPUTBUFFER parancshoz hasonló adatokat ad vissza. Az alábbiakban példákat talál arra, hogy mikor használható a fn_get_sql függvény, mert a DBCC INPUTBUFFER nem lehet:
Ha az események 255 karakternél több karakterből állnak.
Ha egy tárolt eljárás legmagasabb aktuális beágyazási szintjét kell visszaadnia. Például két tárolt eljárás van, amelyek neve sp_1 és sp_2. Ha sp_1 meghívja sp_2, és a leírót a sys.dm_exec_requests dinamikus felügyeleti nézetből szerzi be, miközben sp_2 fut, a fn_get_sql függvény a sp_2 adatait adja vissza. Emellett a fn_get_sql függvény a tárolt eljárás teljes szövegét adja vissza a legmagasabb aktuális beágyazási szinten.
Engedélyek
A felhasználónak a KISZOLGÁLÓ ÁLLAPOTának megtekintése engedélyre van szüksége a kiszolgálón.
Példák
Az adatbázis-rendszergazdák az alábbi példában látható módon használhatják a fn_get_sql függvényt a problémafolyamatok diagnosztizálásához. Miután a rendszergazda azonosította a probléma munkamenet-azonosítóját, a rendszergazda lekérheti az adott munkamenet SQL-leíróját, meghívhatja fn_get_sql a leíróval, majd a probléma munkamenet-azonosítójának SQL-szövegének meghatározásához használja a kezdő és a záró eltolást.
DECLARE @Handle varbinary(64);
SELECT @Handle = sql_handle
FROM sys.dm_exec_requests
WHERE session_id = 52 and request_id = 0;
SELECT * FROM sys.fn_get_sql(@Handle);
GO
Lásd még:
DBCC INPUTBUFFER (Transact-SQL)
sys.sysprocesses (Transact-SQL)
sys.dm_exec_requests (Transact-SQL)