Megosztás a következőn keresztül:


sys.dm_exec_describe_first_result_set (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Ez a dinamikus menedzsment függvény egy Transact-SQL utasítást vesz fel paraméterként, és visszaadja az állítás első eredményhalmazának metaadatait.

sys.dm_exec_describe_first_result_set ugyanazt az eredményhalmaz-definíciót adja, mint sys.dm_exec_describe_first_result_set_for_object , és hasonló a sp_describe_first_result_set-hez.

Transact-SQL szintaxis konvenciók

Szemantika

sys.dm_exec_describe_first_result_set(@tsql , @params , @include_browse_information)

Arguments

@tsql

Egy vagy több Transact-SQL utasítás. A @tsql adag lehet nvarchar(n) vagy nvarchar(max).

@params

@params egy deklarációs láncsort biztosít a Transact-SQL tétel paramétereire, hasonlóan a sp_executesql. A paraméterek lehetnek nvarchar(n) vagy nvarchar(max).

Egy egyetlen string, amely tartalmazza az összes paraméter definícióját, amely a @tsql tételbe van ágyazva. A sztringnek Unicode-állandónak vagy Unicode-változónak kell lennie. Minden paraméterdefiníció egy paraméternévből és egy adattípusból áll. n egy helyőrző, amely további paraméterdefiníciókat jelez. Minden stmt-ben megadott paramétert meg kell definiálni @params-ben. Ha az utasításban szereplő Transact-SQL utasítás vagy köteg nem tartalmaz paramétereket, @params nincs szükség. NULL a paraméter alapértelmezett értéke.

@include_browse_information

Ha 1-re van állítva, minden lekérdezést úgy elemzünk, mintha FOR BROWSE lenne opció a lekérdezésen. Az eredmény extra kulcsfontosságú oszlopokat és forrástábla-információkat tartalmaz.

Visszaadott tábla

A függvény ezt a közös metaadatot eredményhalmazként adja vissza. Minden sor egy oszlopnak felel meg az eredményadatok metaadataiban, és az oszlop típusát és nullitását írja le az alábbi táblázatban látható formátumban. Ha az első állítás nem létezik minden vezérlőútra, a függvény egy nulla soros eredményhalmazt ad vissza.

Oszlop név Adattípus Description
is_hidden bit Megadja, hogy az oszlop egy extra oszlop, amelyet böngészés és információs célokra adnak hozzá, de valójában nem jelenik meg az eredményhalmazban.
column_ordinal int Tartalmazza az oszlop sorrendhelyzetét az eredményhalmazban. Az első oszlop pozícióját úgy határozzuk meg.1
name sysname Tartalmazza az oszlop nevét, ha meg lehet határozni egy név. Ha nem, akkor NULL.
is_nullable bit Tartalmazza a következő értékeket:

Visszatér 1 , ha az oszlop engedélyezi NULL az értékeket.

Akkor is visszatér 0 , ha az oszlop nem engedélyezi NULL az értékeket.

Visszanyer 1 , ha nem lehet megállapítani, hogy az oszlop engedélyezi NULL az értékeket.
system_type_id int Tartalmazza system_type_id az oszlop adattípusát az alapján, ahogy az a megadott .sys.types CLR típusok esetén, még ha az system_type_name oszlop visszaadja NULL, ez az oszlop 240is .
system_type_name nvarchar(256) Tartalmazza a nevet és az argumentumokat (például hosszúság, pontosság, méretarány), amelyek az oszlop adattípusához vannak megadva.

Ha az adattípus felhasználó által definiált alias típus, akkor az alapul szolgáló rendszertípus itt van megadva.

Ha az adattípus CLR felhasználó által definiált típus, NULL akkor ebben az oszlopban jelenik meg.
max_length smallint Az oszlop maximális hossza (bájtban kifejezve).

-1 = Az oszlop adattípusa varchar(max), nvarchar(max), varbinary(max)vagy xml.

Szövegoszlopok esetén az max_length érték 16, vagy az érték, amelyet .sp_tableoption 'text in row'
precision tinyint Az oszlop pontossága, ha numerikus. Ellenkező esetben 0ad vissza.
scale tinyint Az oszlop skálája, ha numerikusan alapul. Ellenkező esetben 0ad vissza.
collation_name sysname Az oszlop összeállításának neve, ha karakter-alapú. Ellenkező esetben NULLad vissza.
user_type_id int CLR- és aliastípusok esetén az oszlop adattípusának user_type_id tartalmazza a sys.types. Ellenkező esetben NULL.
user_type_database sysname CLR és alias típusok esetén tartalmazza annak az adatbázisnak a nevét, amelyben a típus definiálva van. Ellenkező esetben NULL.
user_type_schema sysname CLR és alias típusok esetén tartalmazza annak a sémának a nevét, amelyben a típus meg van határozva. Ellenkező esetben NULL.
user_type_name sysname CLR és alias típusok esetén tartalmazza a típus nevét. Ellenkező esetben NULL.
assembly_qualified_type_name nvarchar(4000) CLR típusok esetén a típust definiáló assembly és osztály nevét adja vissza. Ellenkező esetben NULL.
xml_collection_id int Az oszlop adattípusának xml_collection_id tartalmazza a sys.columns. Ez az oszlop NULL ad vissza, ha a visszaadott típus nincs XML-sémagyűjteményhez társítva.
xml_collection_database sysname Tartalmazza azt az adatbázist, amelyben az ehhez a típushoz tartozó XML sémagyűjtemény definiálva van. Ez az oszlop NULL ad vissza, ha a visszaadott típus nincs XML-sémagyűjteményhez társítva.
xml_collection_schema sysname Tartalmazza azt a sémát, amelyben az ehhez a típushoz tartozó XML sémagyűjtemény definiálva van. Ez az oszlop NULL ad vissza, ha a visszaadott típus nincs XML-sémagyűjteményhez társítva.
xml_collection_name sysname Tartalmazza az ehhez a típushoz tartozó XML sémagyűjtemény nevét. Ez az oszlop NULL ad vissza, ha a visszaadott típus nincs XML-sémagyűjteményhez társítva.
is_xml_document bit Akkor jelenik 1 meg, ha a visszaküldött adattípus XML, és az a típus garantáltan teljes XML dokumentum (beleértve egy gyökércsomópontot is, nem pedig XML töredéket). Ellenkező esetben 0ad vissza.
is_case_sensitive bit Akkor is visszahívja 1 , ha az oszlop kis- és nagybetűs stringtípusú. Ha nem az, akkor visszaad 0 .
is_fixed_length_clr_type bit Akkor is visszanyer 1 , ha az oszlop fix hosszúságú CLR típusú. Ha nem az, akkor visszaad 0 .
source_server sysname Az eredeti szerver neve (ha távoli szerverről származik). A név a sys.serversjelenik meg. NULL adja vissza, ha az oszlop a helyi kiszolgálóról származik, vagy ha nem állapítható meg, hogy melyik kiszolgálóról származik. Csak akkor jelenik meg, ha böngészési információkat kérnek.
source_database sysname Az eredeti adatbázis neve a következőben megjelenő oszlop által visszakerült. NULL ad vissza, ha az adatbázis nem határozható meg. Csak akkor jelenik meg, ha böngészési információkat kérnek.
source_schema sysname Az eredeti séma nevét az oszlop adja vissza ebben az eredményben. NULL ad vissza, ha a séma nem határozható meg. Csak akkor jelenik meg, ha böngészési információkat kérnek.
source_table sysname Az eredeti tábla neve, amelyet az oszlop adott vissza ebben az eredményben. NULL ad vissza, ha a tábla nem határozható meg. Csak akkor jelenik meg, ha böngészési információkat kérnek.
source_column sysname Az eredményoszlop által visszaadott eredeti oszlop neve. NULL ad vissza, ha az oszlop nem határozható meg. Csak akkor jelenik meg, ha böngészési információkat kérnek.
is_identity_column bit Visszaad 1 , ha az oszlop identitásoszlop, és 0, ha nem. NULL ad vissza, ha nem állapítható meg, hogy az oszlop identitásoszlop.
is_part_of_unique_key bit Akkor jelenik 1 meg, ha az oszlop egy egyedi index része (beleértve az egyedi és elsődleges korlátokat is), és 0-t, ha nem az. NULL ad vissza, ha nem állapítható meg, hogy az oszlop egy egyedi index része. Csak akkor jelenik meg, ha böngészési információkat kérnek.
is_updateable bit Visszaad 1 , ha az oszlop frissíthető, 0-t, ha nem. NULL ad vissza, ha nem állapítható meg, hogy az oszlop frissíthető-e.
is_computed_column bit Visszaad 1 , ha az oszlop kiszámított oszlop, és 0, ha nem. Akkor is megtérül NULL , ha nem lehet megállapítani, hogy az oszlop kiszámított oszlop-e.
is_sparse_column_set bit Visszaad 1 , ha az oszlop ritka oszlop, és 0, ha nem. Akkor tér vissza NULL , ha nem lehet megállapítani, hogy az oszlop egy ritka oszlophalmazhoz tartozik.
ordinal_in_order_by_list smallint Ennek az oszlopnak a helye a ORDER BY listában van. Akkor jelenik NULL meg, ha az oszlop nem jelenik meg a ORDER BY listában, vagy ha a ORDER BY lista nem lehet egyediben meghatározni.
order_by_list_length smallint A ORDER BY lista hossza. NULL akkor jelenik meg, ha nincs ORDER BY lista vagy ha a ORDER BY lista nem lehet egyediben meghatározni. Ez az érték megegyezik az sp_describe_first_result_setáltal visszaadott összes sornál.
order_by_is_descending smallint Ha a ordinal_in_order_by_list nem NULL, a order_by_is_descending oszlop az oszlop ORDER BY záradékának irányát jelenti. Ellenkező esetben a jelentés NULL.
error_number int Tartalmazza a függvény által visszaadott hibaszámot. Ha hiba nem történt, az oszlop tartalmazza NULL.
error_severity int Tartalmazza a függvény által visszaadott súlyosságot. Ha hiba nem történt, az oszlop tartalmazza NULL.
error_state int Tartalmazza a függvény által visszaadott állapotüzenetet. Ha hiba nem történt, az oszlop tartalmazza NULL.
error_message nvarchar(4096) Tartalmazza a függvény által visszaküldött üzenetet. Ha hiba nem történt, az oszlop tartalmazza NULL.
error_type int Tartalmaz egy egész számot, amely a visszaadott hibát jelöli. Térképek a error_type_desc. Lásd a listát a megjegyzések alatt.
error_type_desc nvarchar(60) Egy rövid nagybetűs stringet tartalmaz, amely a visszaadott hibát jelöli. Térképek a error_type. Lásd a listát a megjegyzések alatt.

Megjegyzések

Ez a függvény ugyanazt az algoritmust használja, mint sp_describe_first_result_set. További információért lásd: sp_describe_first_result_set.

Az alábbi táblázat felsorolja a hibatípusokat és azok leírásait.

error_type error_type Description
1 MISC Minden olyan hibá, amit másképp nem írnak le.
2 SYNTAX A batch során szintaktishiba történt.
3 CONFLICTING_RESULTS Az eredményt nem lehetett megállapítani két lehetséges első állítás közötti ütközés miatt.
4 DYNAMIC_SQL Az eredményt nem lehetett meghatározni a dinamikus SQL miatt, amely potenciálisan visszaadhatja az első eredményt.
5 CLR_PROCEDURE Az eredményt nem lehetett meghatározni, mert egy CLR által tárolt eljárás potenciálisan visszahozhatja az első eredményt.
6 CLR_TRIGGER Az eredményt nem lehetett meghatározni, mert egy CLR trigger potenciálisan visszahozhatja az első eredményt.
7 EXTENDED_PROCEDURE Az eredményt nem lehetett meghatározni, mert egy hosszabb tárolt eljárás potenciálisan visszahozhatta az első eredményt.
8 UNDECLARED_PARAMETER Az eredményt nem lehetett meghatározni, mert az eredményhalmaz egyik vagy több oszlopának adattípusa potenciálisan függ egy kijelentetlen paramétertől.
9 RECURSION Az eredményt nem lehetett megállapítani, mert a batch tartalmaz egy rekurzív állítást.
10 TEMPORARY_TABLE Az eredményt nem lehetett meghatározni, mert a batch ideiglenes táblát tartalmaz, és nem támogatja sp_describe_first_result_set .
11 UNSUPPORTED_STATEMENT Az eredményt nem lehetett meghatározni, mert a batch tartalmaz egy olyan állítást, amelyet nem támogat sp_describe_first_result_set (például, FETCH, REVERT, stb.).
12 OBJECT_TYPE_NOT_SUPPORTED A @object_id függvénynek való továbbítás nem támogatott (vagyis nem tárolt eljárás).
13 OBJECT_DOES_NOT_EXIST A @object_id függvényhez átadott rendszer nem található meg a rendszerkatalógusban.

Permissions

Engedélyt igényel a @tsql argumentum végrehajtásához.

Példák

A cikkben szereplő kódminták a AdventureWorks2025 vagy AdventureWorksDW2025 mintaadatbázist használják, amelyet a Microsoft SQL Server-minták és közösségi projektek kezdőlapjáról tölthet le.

A sp_describe_first_result_set cikkben szereplő példákat átalakíthatod a sys.dm_exec_describe_first_result_set.

A. Információt küldj vissza egyetlen Transact-SQL állításról

A következő kód információt ad egy Transact-SQL állítás eredményeiről.

USE @AdventureWorks2025;

SELECT *
FROM sys.dm_exec_describe_first_result_set (
    N'SELECT object_id, name, type_desc FROM sys.indexes', null, 0
);

B. Információ egy eljárásról

A következő példa egy tárolt eljárást hoz létre, amely pr_TestProc két eredményhalmazt ad vissza. Ezután a példa azt mutatja, hogy sys.dm_exec_describe_first_result_set az eljárás első eredményhalmazáról érkezik vissza információ.

USE @AdventureWorks2025;
GO

CREATE PROC Production.TestProc
AS
    SELECT Name, ProductID, Color
    FROM Production.Product;

    SELECT Name, SafetyStockLevel, SellStartDate
    FROM Production.Product;
GO

SELECT *
FROM sys.dm_exec_describe_first_result_set('Production.TestProc', NULL, 0);

C. Vissza metaadatot egy olyan tételből, amely több állítást tartalmaz

A következő példa egy olyan tételt értékel, amely két Transact-SQL állítást tartalmaz. Az eredményhalmaz az első visszaadott eredményhalmazt írja le.

USE AdventureWorks2025;
GO

SELECT *
FROM sys.dm_exec_describe_first_result_set(
    N'SELECT CustomerID, TerritoryID, AccountNumber FROM Sales.Customer WHERE CustomerID = @CustomerID;SELECT * FROM Sales.SalesOrderHeader;',
    N'@CustomerID int',
    0
) AS a;