Aracılığıyla paylaş


sys.dm_exec_describe_first_result_set (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Bu dinamik yönetim fonksiyonu, bir Transact-SQL ifadesini parametre olarak alır ve ilanının ilk sonuç kümesi için meta veriyi döndürür.

sys.dm_exec_describe_first_result_set sys.dm_exec_describe_first_result_set_for_object ile aynı sonuç kümesi tanımını döndürür ve sp_describe_first_result_set'a benzer.

Transact-SQL söz dizimi kuralları

Sözdizimi

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

Arguments

@tsql

Bir veya daha fazla Transact-SQL deyimi. @tsql partisi nvarchar(n) veya nvarchar(max) olabilir.

@params

@params, Transact-SQL partisi için parametreler için bir bildirme dizisi sağlar; benzer.sp_executesql Parametreler nvarchar(n) veya nvarchar(max) olabilir.

@tsql partisine gömülü tüm parametrelerin tanımlarını içeren tek bir dize. Dize bir Unicode sabiti veya Unicode değişkeni olmalıdır. Her parametre tanımı bir parametre adından ve bir veri türünden oluşur. n, ek parametre tanımlarını gösteren bir yer tutucudur. STMT'de belirtilen her parametre @params'de tanımlanmalıdır. deyimindeki Transact-SQL deyimi veya toplu işlemi parametre içermiyorsa @params gerekli değildir. NULL bu parametre için varsayılan değerdir.

@include_browse_information

1 olarak ayarlanırsa, her sorgu sorguda bir seçenek varmış FOR BROWSE gibi analiz edilir. Sonuç ekstra ana sütunlar ve kaynak tablo bilgisi içerir.

Tablo geri getirildi

Fonksiyon, bu ortak metaveriyi bir sonuç kümesi olarak döndürür. Her satır, sonuç metaverisindeki bir sütuna karşılık gelir ve aşağıdaki tabloda gösterilen formatta sütunun türünü ve nullability'ni tanımlar. Eğer her kontrol yolu için ilk ifade yoksa, fonksiyon sıfır satırlı bir sonuç kümesi döndürür.

Sütun adı Veri türü Description
is_hidden bit Sütunun, gezinme ve bilgilendirme amaçlı eklenen ekstra bir sütun olduğunu, ancak aslında sonuç kümesinde görünmediğini belirtir.
column_ordinal int Sonuç kümesindeki sütunun sırasal konumunu içerir. İlk sütunun konumu olarak belirtilir 1.
name sysname Eğer bir isim belirlenebiliyorsa, sütunun adını içerir. Eğer değilse, NULL.
is_nullable bit Aşağıdaki değerleri içerir:

Sütun değer izinliyorsa NULL döner1.

Sütun değerlere izin NULL vermiyorsa döner0.

Sütunun değerlere izin NULL verdiği belirlenemezse döner1.
system_type_id int 'de belirtilen sys.typessütun veri tipini içerirsystem_type_id. CLR türleri için, sütun system_type_name döndürse NULLbile, bu sütun 240döndürür.
system_type_name nvarchar(256) Sütunun veri tipi için belirlenen isim ve argümanları (uzunluk, hassasiyet, ölçek gibi) içerir.

Eğer veri tipi kullanıcı tarafından tanımlanan bir takma ad türüyse, altta yatan sistem tipi burada belirtilmiştir.

Eğer veri tipi CLR kullanıcı tanımlı bir tipse, NULL bu sütunda döner.
max_length smallint Sütunun uzunluk üst sınırı (bayt cinsinden).

-1 = Sütun veri türü varchar(max), nvarchar(max), varbinary(max)veya xml.

Metin sütunları için değer max_length16, ya da değer olarak belirlenirsp_tableoption 'text in row'.
precision tinyint Sayısal tabanlıysa sütunun hassasiyeti. Aksi takdirde 0döndürür.
scale tinyint Sayısal tabanlıysa sütun ölçeği. Aksi takdirde 0döndürür.
collation_name sysname Karakter bazlıysa, sütunun derleme ismi. Aksi takdirde NULLdöndürür.
user_type_id int CLR ve alias türleri için, user_type_id sütunun veri tipinin 'de belirtildiği sys.typesgibi. Aksi takdirde NULL.
user_type_database sysname CLR ve alias türleri için, türün tanımlandığı veritabanının adını içerir. Aksi takdirde NULL.
user_type_schema sysname CLR ve alias türleri için, türün tanımlandığı şemanın adını içerir. Aksi takdirde NULL.
user_type_name sysname CLR ve alias türleri için, türün adını içerir. Aksi takdirde NULL.
assembly_qualified_type_name nvarchar(4000) CLR tipleri için, tipi tanımlayan assembly ve sınıfın adını döndürür. Aksi takdirde NULL.
xml_collection_id int xml_collection_id'de belirtildiği gibi sütunun veri türünün sys.columns içerir. Bu sütun, döndürülen tip bir XML şema koleksiyonuyla ilişkilendirilmiyorsa döner NULL .
xml_collection_database sysname Bu tiple ilişkili XML şema koleksiyonunun tanımlandığı veritabanını içerir. Bu sütun, döndürülen tip bir XML şema koleksiyonuyla ilişkilendirilmiyorsa döner NULL .
xml_collection_schema sysname Bu tiple ilişkili XML şema koleksiyonunun tanımlandığı şemayı içerir. Bu sütun, döndürülen tip bir XML şema koleksiyonuyla ilişkilendirilmiyorsa döner NULL .
xml_collection_name sysname Bu tiple ilişkili XML şema koleksiyonunun adını içerir. Bu sütun, döndürülen tip bir XML şema koleksiyonuyla ilişkilendirilmiyorsa döner NULL .
is_xml_document bit 1 Geri dönen veri tipi XML ise ve bu tip tam bir XML belgesi (kök düğüm dahil, XML parçası değil) garanti edilirse. Aksi takdirde 0döndürür.
is_case_sensitive bit Sütun büyük harf duyarlı bir dizi türündeyse döner 1 . 0 Eğer dönerse geri gelir.
is_fixed_length_clr_type bit Sütun sabit uzunlukta bir CLR tipindeyse döndürer 1 . 0 Eğer dönerse geri gelir.
source_server sysname Kaynak sunucunun adı (eğer uzaktan bir sunucudan geliyorsa). Ad, sys.serversiçinde göründüğü şekilde verilir. Sütunun kaynağı yerel sunucudaysa veya hangi sunucudan kaynaklandığı belirlenemiyorsa NULL döndürür. Sadece gezinme bilgisi istendiğinde doldurulur.
source_database sysname Bu sonuçta sütunun yanından gelen kaynak veritabanının adı. Veritabanı belirlenemiyorsa NULL döndürür. Sadece gezinme bilgisi istendiğinde doldurulur.
source_schema sysname Bu sonuçta sütunun yanından dönen başlangıç şemasının adı. Şema belirlenemiyorsa NULL döndürür. Sadece gezinme bilgisi istendiğinde doldurulur.
source_table sysname Bu sonuçta sütunun yanından gelen başlangıç tablosunun adı. Tablo belirlenemiyorsa NULL döndürür. Sadece gezinme bilgisi istendiğinde doldurulur.
source_column sysname Sonuç sütununun yanındaki kaynak sütunun adı. Sütun belirlenemiyorsa NULL döndürür. Sadece gezinme bilgisi istendiğinde doldurulur.
is_identity_column bit Sütun bir kimlik sütunuysa, değilse 0 döndürer 1 . Sütunun bir kimlik sütunu olduğu belirlenemezse NULL döndürür.
is_part_of_unique_key bit Sütun benzersiz bir indeksin parçası ise (benzersiz ve birincil kısıtlamalar dahil) ise 0 döndürür 1 . Sütunun benzersiz bir dizinin parçası olduğu belirlenemezse NULL döndürür. Sadece gezinme bilgisi istendiğinde doldurulur.
is_updateable bit Sütun güncellenebilirse 0 döndürüyor, değilse 0 döndürüyor 1 . Sütunun güncelleştirilebilir olduğu belirlenemezse NULL döndürür.
is_computed_column bit Sütun hesaplanmış bir sütunsa, değilse 0 döndürer 1 . Eğer sütunun hesaplanmış bir sütun olup olmadığı belirlenemezse döner NULL .
is_sparse_column_set bit Sütun seyrek bir sütunsa, değilse 0 döndürer 1 . Eğer sütunun seyrek bir sütun kümesinin parçası olduğu belirlenemezse döner NULL .
ordinal_in_order_by_list smallint Bu sütunun konumu listede ORDER BY yer almaktadır. Sütun listede görünmezse ORDER BY veya liste ORDER BY benzersiz şekilde belirlenemiyorsa dönerNULL.
order_by_list_length smallint Listenin ORDER BY uzunluğu. NULL Liste yoksa ORDER BY veya liste ORDER BY benzersiz olarak belirlenemiyorsa geri döner. Bu değer, sp_describe_first_result_settarafından döndürülen tüm satırlar için aynıdır.
order_by_is_descending smallint ordinal_in_order_by_list NULLdeğilse, order_by_is_descending sütunu bu sütun için ORDER BY yan tümcesinin yönünü bildirir. Aksi takdirde NULLbildirir.
error_number int Fonksiyonun döndürüp getirdiği hata sayısını içerir. Hata olmadıysa, sütun NULL.
error_severity int Fonksiyonun geri getiren şiddetini içerir. Hata olmadıysa, sütun NULL.
error_state int Fonksiyonun geri dönen durum mesajını içerir. Hata olmadıysa, sütun NULL.
error_message nvarchar(4096) Fonksiyonun geri gönderdiği mesajı içerir. Hata olmadıysa, sütun NULL.
error_type int Geri dönen hatayı temsil eden bir tam sayı içerir. error_type_descile eşler. Listeye Açıklamalar altındaki bakınız.
error_type_desc nvarchar(60) Geri dönen hatayı temsil eden kısa bir büyük harf dizisi içerir. error_typeile eşler. Listeye Açıklamalar altındaki bakınız.

Açıklamalar

Bu fonksiyon, aynı algoritmayı kullanır.sp_describe_first_result_set Daha fazla bilgi için bkz. sp_describe_first_result_set.

Aşağıdaki tablo hata türlerini ve açıklamalarını listeler.

error_type error_type Description
1 MISC Başka şekilde açıklanmayan tüm hatalar.
2 SYNTAX Partide bir sözdizimi hatası meydana geldi.
3 CONFLICTING_RESULTS Sonuç, iki olası ilk ifade arasındaki çelişki nedeniyle belirlenemedi.
4 DYNAMIC_SQL Sonuç, dinamik SQL nedeniyle belirlenemedi; çünkü bu potansiyel olarak ilk sonucu geri getirebilirdi.
5 CLR_PROCEDURE Sonuç belirlenemedi çünkü bir CLR depolanmış prosedür potansiyel olarak ilk sonucu geri getirebilirdi.
6 CLR_TRIGGER Sonuç belirlenemedi çünkü bir CLR tetikleyicisi potansiyel olarak ilk sonucu geri getirebilirdi.
7 EXTENDED_PROCEDURE Sonuç belirlenemezdi çünkü genişletilmiş bir depolanmış prosedür potansiyel olarak ilk sonucu geri getirebilirdi.
8 UNDECLARED_PARAMETER Sonuç belirlenemedi; çünkü sonuç kümesinin bir veya daha fazla sütununun veri türü potansiyel olarak bildirilmemiş bir parametreye bağlıdır.
9 RECURSION Sonuç belirlenemedi çünkü toplu bir özyinelemeli ifade içeriyordu.
10 TEMPORARY_TABLE Sonuç belirlenemedi çünkü parti geçici bir tablo içeriyor ve desteklenmiyor sp_describe_first_result_set .
11 UNSUPPORTED_STATEMENT Sonuç belirlenemedi çünkü toplu bölüm desteklenmeyen bir ifade sp_describe_first_result_set içeriyor (örneğin, FETCH, REVERT, vb.).
12 OBJECT_TYPE_NOT_SUPPORTED @object_id Fonksiyona iletilen işlem desteklenmez (yani, saklanan bir prosedür değildir).
13 OBJECT_DOES_NOT_EXIST @object_id Fonksiyona verilen mesaj sistem kataloğunda bulunmaz.

Permissions

@tsql argümanını çalıştırmak için izin gerektirir.

Örnekler

Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.

sp_describe_first_result_set makaledeki örnekleri uyarlayarak sys.dm_exec_describe_first_result_set.

A. Tek bir Transact-SQL ifadesi hakkında bilgi döndürme

Aşağıdaki kod, Transact-SQL ifadesinin sonuçları hakkında bilgi sağlar.

USE @AdventureWorks2025;

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

B. Bir prosedür hakkında bilgi geri gönderin

Aşağıdaki örnek, iki sonuç kümesi döndüren bir kayıtlı prosedür oluşturur pr_TestProc . Sonra örnek, sys.dm_exec_describe_first_result_set prosedürdeki ilk sonuç kümesi hakkında bilgi döndürdüğünü gösterir.

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. Birden fazla ifade içeren bir partiden meta veri döndürün

Aşağıdaki örnek, iki Transact-SQL ifadesi içeren bir grup değerler. Sonuç kümesi, döndürülen ilk sonuç kümesini tanımlar.

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;