Share via


sys.dm_exec_describe_first_result_set (Transact-SQL)

Diese dynamische Verwaltungsfunktion akzeptiert eine Transact-SQL-Anweisung als Parameter und beschreibt die Metadaten des ersten Resultsets für die Anweisung.

sys.dm_exec_describe_first_result_set weist die gleiche Resultsetdefinition wie sys.dm_exec_describe_first_result_set_for_object (Transact-SQL) auf und ist sp_describe_first_result_set (Transact-SQL) ähnlich.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

  • @tsql
    Eine oder mehrere Transact-SQL-Anweisungen. Transact-SQL_batch kann vom Typ nvarchar(n) oder nvarchar(max) sein.

  • @params
    @params stellt eine Parameterdeklarationszeichenfolge für den Transact-SQL-Batch analog zu sp_executesql bereit. Die Parameter können nvarchar(n) oder nvarchar(max) sein.

    Eine Zeichenfolge, die die Definitionen aller im Transact-SQL_batch eingebetteten Parameter enthält. Die Zeichenfolge muss eine Unicode-Konstante oder eine Unicode-Variable sein. Jede Parameterdefinition besteht aus einem Parameternamen und einem Datentyp. Dabei ist n ein Platzhalter für zusätzliche Parameterdefinitionen. Jeder in stmt angegebene Parameter muss in @params definiert werden. Wenn die Transact-SQL-Anweisung oder der -Batch in der Anweisung keine Parameter enthalten, ist @params nicht erforderlich. Der Standardwert für diesen Parameter ist NULL.

  • @include\_browse\_information
    Bei 1 werden alle Abfragen so analysiert, als ob die FOR BROWSE-Option in der Abfrage enthalten wäre. Zusätzliche Schlüsselspalten und Quelltabelleninformationen werden zurückgegeben.

Zurückgegebene Tabelle

Diese gemeinsamen Metadaten werden als Resultset zurückgegeben. In den Ergebnismetadaten sind in einer Zeile pro Spalte der Typ und die NULL-Zulässigkeit der Spalte in dem in der folgenden Tabelle dargestellten Format beschrieben. Wenn die erste Anweisung nicht für alle Steuerelementpfade vorhanden ist, wird ein Resultset mit 0 Zeilen zurückgegeben.

Spaltenname

Datentyp

Beschreibung

is_hidden

bit

Gibt an, dass es sich bei der Spalte um eine zusätzliche Spalte zum Suchen und für Informationszwecke handelt, die nicht im Resultset angezeigt wird.

column_ordinal

int

Enthält die Ordnungsposition der Spalte im Resultset. Die Position der ersten Spalte wird mit 1 angegeben.

name

sysname

Enthält den Namen der Spalte, wenn ein Name bestimmt werden kann. Enthält andernfalls NULL.

is_nullable

bit

Enthält die folgenden Werte:

  • Wert 1, wenn die Spalte NULL-Werte zulässt.

  • Wert 0, wenn die Spalte keine NULL-Werte zulässt.

  • Wert 1, wenn nicht bestimmt werden kann, ob die Spalte NULL-Werte zulässt.

system_type_id

int

Enthält die system_type_id des Datentyps für die Spalte, wie in sys.types angegeben. Bei CLR-Typen wird von dieser Spalte der Wert 240 zurückgegeben, obwohl NULL von der system_type_name-Spalte zurückgegeben wird.

system_type_name

nvarchar(256)

Enthält den Namen und die Argumente (z. B. Länge, Genauigkeit oder Skala), die für den Datentyp der Spalte angegeben wurden.

Wenn es sich bei dem Datentyp um einen benutzerdefinierten Aliastyp handelt, wird hier der zugrunde liegende Systemtyp angegeben.

Wenn es sich bei dem Datentyp um einen benutzerdefinierten CLR-Typ handelt, wird in dieser Spalte NULL zurückgegeben.

max_length

smallint

Maximale Länge (in Byte) für die Spalte.

-1 = Spaltendatentyp ist varchar(max), nvarchar(max), varbinary(max) oder xml.

Bei text-Spalten beträgt der max_length-Wert 16 oder wird von sp_tableoption 'text in row' festgelegt.

precision

tinyint

Die Genauigkeit der Spalte, wenn sie auf numerischen Werten basiert. Andernfalls wird 0 zurückgegeben.

scale

tinyint

Die Skalierung der Spalte, wenn sie auf numerischen Werten basiert. Andernfalls wird 0 zurückgegeben.

collation_name

sysname

Name der Sortierung der Spalte, wenn diese zeichenbasiert ist. Andernfalls wird NULL zurückgegeben.

user_type_id

int

Enthält bei CLR- und Aliastypen die user_type_id des Datentyps der Spalte, wie in sys.types angegeben. Andernfalls NULL.

user_type_database

sysname

Enthält bei CLR- und Aliastypen den Namen der Datenbank, in der der Typ definiert wurde. Andernfalls NULL.

user_type_schema

sysname

Enthält bei CLR- und Aliastypen den Namen des Schemas, in dem der Typ definiert wurde. Andernfalls NULL.

user_type_name

sysname

Enthält bei CLR- und Aliastypen den Namen des Typs. Andernfalls NULL.

assembly_qualified_type_name

nvarchar(4000)

Gibt bei CLR-Typen den Namen der Assembly und der Klasse zurück, die den Typ definieren. Andernfalls NULL.

xml_collection_id

int

Enthält die xml_collection_id des Datentyps für die Spalte, wie in sys.columns angegeben. Diese Spalte gibt NULL zurück, wenn der zurückgegebene Typ keiner XML-Schemaauflistung zugeordnet ist.

xml_collection_database

sysname

Enthält die Datenbank, in der die XML-Schemaauflistung definiert ist, die diesem Typ zugeordnet wurde. Diese Spalte gibt NULL zurück, wenn der zurückgegebene Typ keiner XML-Schemaauflistung zugeordnet ist.

xml_collection_schema

sysname

Enthält das Schema, in dem die XML-Schemaauflistung definiert ist, die diesem Typ zugeordnet wurde. Diese Spalte gibt NULL zurück, wenn der zurückgegebene Typ keiner XML-Schemaauflistung zugeordnet ist.

xml_collection_name

sysname

Enthält den Namen der XML-Schemaauflistung, die diesem Typ zugeordnet wurde. Diese Spalte gibt NULL zurück, wenn der zurückgegebene Typ keiner XML-Schemaauflistung zugeordnet ist.

is_xml_document

bit

Gibt 1 zurück, wenn der zurückgegebene Datentyp XML ist und für diesen Typ garantiert ist, dass es sich um ein vollständiges XML-Dokument (einschließlich eines Stammknotens) handelt, nicht um ein XML-Fragment. Andernfalls wird 0 zurückgegeben.

is_case_sensitive

bit

Gibt 1 zurück, wenn die Spalte von einem string-Typ ist, bei dem die Groß-/Kleinschreibung beachtet wird. Andernfalls wird 0 zurückgegeben.

is_fixed_length_clr_type

bit

Gibt 1 zurück, wenn die Spalte von einem CLR-Typ mit fester Länge ist. Andernfalls wird 0 zurückgegeben.

source_server

sysname

Name des ursprünglichen Servers (bei Ursprung auf einem Remoteserver). Der Name wird wie in sys.servers angegeben. Gibt NULL zurück, wenn die Spalte vom lokalen Server stammt oder der ursprüngliche Server nicht ermittelt werden konnte. Wird nur aufgefüllt, wenn die Suche nach Informationen erforderlich ist.

source_database

sysname

Der Name der ursprünglichen Datenbank, die von der Spalte in diesem Ergebnis zurückgegeben wird. Gibt NULL zurück, wenn die Datenbank nicht ermittelt werden kann. Wird nur aufgefüllt, wenn die Suche nach Informationen erforderlich ist.

source_schema

sysname

Der Name des ursprünglichen Schemas, das von der Spalte in diesem Ergebnis zurückgegeben wird. Gibt NULL zurück, wenn das Schema nicht bestimmt werden kann. Wird nur aufgefüllt, wenn die Suche nach Informationen erforderlich ist.

source_table

sysname

Der Name der ursprünglichen Tabelle, die von der Spalte in diesem Ergebnis zurückgegeben wird. Gibt NULL zurück, wenn die Tabelle nicht bestimmt werden kann. Wird nur aufgefüllt, wenn die Suche nach Informationen erforderlich ist.

source_column

sysname

Der Name der ursprünglichen Spalte, die von der Ergebnisspalte zurückgegeben wird. Gibt NULL zurück, wenn die Spalte nicht bestimmt werden kann. Wird nur aufgefüllt, wenn die Suche nach Informationen erforderlich ist.

is_identity_column

bit

Gibt 1 zurück, wenn die Spalte eine Identitätsspalte ist, andernfalls 0. Gibt NULL zurück, wenn nicht ermittelt werden kann, ob die Spalte eine Identitätsspalte ist.

is_part_of_unique_key

bit

Gibt 1 zurück, wenn die Spalte Teil eines eindeutigen Index (einschließlich UNIQUE- und PRIMARY-Einschränkungen) ist, andernfalls 0. Gibt NULL zurück, wenn nicht ermittelt werden kann, ob die Spalte Teil eines eindeutigen Indexes ist. Wird nur aufgefüllt, wenn die Suche nach Informationen erforderlich ist.

is_updateable

bit

Gibt 1 zurück, wenn die Spalte aktualisiert werden kann, andernfalls 0. Gibt NULL zurück, wenn nicht ermittelt werden kann, ob die Spalte aktualisiert werden kann.

is_computed_column

bit

Gibt 1 zurück, wenn die Spalte berechnet wird, andernfalls 0. Gibt NULL zurück, wenn nicht ermittelt werden kann, ob es sich um eine berechnete Spalte handelt.

is_sparse_column_set

bit

Gibt 1 zurück, wenn die Spalte eine Spalte mit geringer Dichte ist, andernfalls 0. Gibt NULL zurück, wenn nicht ermittelt werden kann, ob die Spalte Teil eines Spaltensatzes mit geringer Dichte ist.

ordinal_in_order_by_list

smallint

Die Position dieser Spalte ist in der ORDER BY-Liste. Gibt NULL zurück, wenn die Spalte nicht in der ORDER BY-Liste angezeigt wird oder die ORDER BY-Liste nicht eindeutig bestimmt werden kann.

order_by_list_length

smallint

Die Länge der ORDER BY-Liste. NULL wird zurückgegeben, wenn keine ORDER BY-Liste vorhanden ist die ORDER BY-Liste nicht eindeutig bestimmt werden kann. Beachten Sie, dass dieser Wert für alle von sp_describe_first_result_set zurückgegebenen Zeilen gleich ist.

order_by_is_descending

smallint NULL

Wenn ordinal_in_order_by_list nicht NULL ist, wird von der order_by_is_descending-Spalte die Richtung der ORDER BY-Klausel für diese Spalte gemeldet. Andernfalls wird NULL gemeldet.

error_number

int

Enthält die von der Funktion zurückgegebene Fehlernummer. Wenn kein Fehler aufgetreten ist, enthält die Spalte NULL.

error_severity

int

Enthält den von der Funktion zurückgegebenen Schweregrad. Wenn kein Fehler aufgetreten ist, enthält die Spalte NULL.

error_state

int

Enthält die Statusmeldung, die von der Funktion zurückgegeben wird. Wenn kein Fehler aufgetreten ist, enthält die Spalte NULL.

error_message

nvarchar(4096)

Enthält die von der Funktion zurückgegebene Meldung. Wenn kein Fehler aufgetreten ist, enthält die Spalte NULL.

error_type

int

Enthält eine ganze Zahl, die den zurückgegebenen Fehler darstellt. Wird error_type_desc zugeordnet. Siehe Liste unter Hinweisen.

error_type_desc

nvarchar(60)

Enthält eine kurze Zeichenfolge in Großbuchstaben, die den zurückgegebenen Fehler darstellt. Wird error_type zugeordnet. Siehe Liste unter Hinweisen.

Hinweise

Diese Funktion verwendet den gleichen Algorithmus wie sp_describe_first_result_set. Weitere Informationen finden Sie unter sp_describe_first_result_set (Transact-SQL).

In der folgenden Tabelle werden die Fehlertypen und deren Beschreibungen aufgeführt.

error_type

error_type

Beschreibung

1

MISC

Alle Fehler, die nicht anderweitig beschrieben sind.

2

SYNTAX

Im Batch ist ein Syntaxfehler aufgetreten.

3

CONFLICTING_RESULTS

Das Ergebnis konnte wegen eines Konflikts zwischen zwei möglichen ersten Anweisungen nicht ermittelt werden.

4

DYNAMIC_SQL

Das Ergebnis konnte wegen einer dynamischen SQL-Abfrage nicht ermittelt werden, die potenziell das erste Ergebnis zurückgeben kann.

5

CLR_PROCEDURE

Das Ergebnis konnte nicht ermittelt werden, da eine gespeicherte CLR-Prozedur potenziell das erste Ergebnis zurückgeben kann.

6

CLR_TRIGGER

Das Ergebnis konnte wegen eines dynamischen CLR-Triggers nicht ermittelt werden, der potenziell das erste Ergebnis zurückgeben kann.

7

EXTENDED_PROCEDURE

Das Ergebnis konnte nicht ermittelt werden, da eine erweiterte gespeicherte Prozedur potenziell das erste Ergebnis zurückgeben kann.

8

UNDECLARED_PARAMETER

Das Ergebnis konnte nicht ermittelt werden, da der Datentyp einer oder mehrerer Resultsetspalten potenziell von einem nicht deklarierten Parameter abhängt.

9

RECURSION

Das Ergebnis konnte nicht ermittelt werden, da der Batch eine rekursive Anweisung enthält.

10

TEMPORARY_TABLE

Das Ergebnis konnte nicht ermittelt werden, da der Batch eine temporäre Tabelle enthält und von sp_describe_first_result_set nicht unterstützt wird.

11

UNSUPPORTED_STATEMENT

Das Ergebnis konnte nicht ermittelt werden, da der Batch eine Anweisung enthält, die von sp_describe_first_result_set (z. B., FETCH, REVERT usw.) nicht unterstützt wird.

12

OBJECT_TYPE_NOT_SUPPORTED

Die an die Funktion übergebene @object_id wird nicht unterstützt (d. h. keine gespeicherte Prozedur).

13

OBJECT_DOES_NOT_EXIST

Die an die Funktion übergebene @object_id wurde im Systemkatalog nicht gefunden.

Berechtigungen

Erfordert die Berechtigung zur Ausführung des @tsql-Arguments.

Beispiele

Weitere Beispiele im Thema sp_describe_first_result_set (Transact-SQL) können für die Verwendung von sys.dm_exec_describe_first_result_set angepasst werden.

A.Zurückgeben von Informationen zu einer einzelnen Transact-SQL-Anweisung

Im folgenden Code werden Informationen zu den Ergebnissen einer Transact-SQL-Anweisung zurückgegeben.

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

B.Zurückgeben von Informationen zu einer Prozedur

Im folgenden Beispiel wird die gespeicherte Prozedur pr_TestProc erstellt, die zwei Resultsets zurückgibt. Anschließend wird im Beispiel veranschaulicht, dass sys.dm_exec_describe_first_result_set Informationen zum ersten Resultset in der Prozedur zurückgibt.

USE AdventureWorks2012;
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.Zurückgeben von Metadaten von einem Batch mit mehreren Anweisungen

Im folgenden Beispiel wird ein Batch mit zwei Transact-SQL-Anweisungen ausgewertet. Das Resultset beschreibt das erste zurückgegebene Resultset.

USE AdventureWorks2012;
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;
GO

Siehe auch

Verweis

sp_describe_first_result_set (Transact-SQL)

sp_describe_undeclared_parameters (Transact-SQL)

sys.dm_exec_describe_first_result_set_for_object (Transact-SQL)