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 ifadenin ilk sonuç kümesinin meta verilerini tanımlar.

sys.dm_exec_describe_first_result_set , sys.dm_exec_describe_first_result_set_for_object (Transact-SQL) ile aynı sonuç kümesi tanımına sahiptir ve sp_describe_first_result_set (Transact-SQL) ile benzerdir.

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. Transact-SQL_batchnvarchar(n) veya nvarchar(max) olabilir.

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

Transact-SQL_batch'e gömülmüş tüm parametrelerin tanımlarını içeren tek bir dizidir. 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. Eğer ifadedeki Transact-SQL ifadesi veya toplu parametre içermiyorsa, @params gerekmez. NULL, bu parametre için varsayılan değerdir.

@include_browse_information
1 olarak ayarlanırsa, her sorgu sorguda GEZİLİK seçeneği varmış gibi analiz edilir. Ek anahtar sütunlar ve kaynak tablo bilgileri geri gönderilir.

Döndürülen Tablo

Bu ortak meta veri sonuç kümesi olarak döner. Sonuç metaverisindeki her sütun için bir satır, aşağıdaki tabloda gösterilen formatta sütunun türünü ve nullability'ni açıklar. Eğer ilk ifade her kontrol yolu için yoksa, sıfır satır içeren bir sonuç kümesi döner.

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

Değer 1 eğer sütun NULL'lara izin verirse.

Sütun NULL'lara izin vermiyorsa değer 0.

Değer 1, eğer sütunun NULL'lara izin verdiği belirlenemiyorsa.
system_type_id int sys.types'te belirtilen sütun veri tipinin system_type_id içerir. CLR türleri için, system_type_name sütun NULL döndürse de, bu sütun 240 değerini döndürecektir.
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.

Veri tipi CLR kullanıcı tarafından tanımlanan 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'dir.

Metin sütunları için max_length değeri 16 veya 'sıradaki metin' ile belirlenen değer sp_tableoption olur.
kesinlik tinyint Sayısal tabanlıysa sütunun hassasiyeti. Aksi takdirde 0 döner.
scale tinyint Sayısal tabanlıysa sütun ölçeği. Aksi takdirde 0 döner.
collation_name sysname Karakter bazlıysa, sütunun derleme ismi. Aksi takdirde NULL döner.
user_type_id int CLR ve alias tipleri için, sys.types'te belirtilen sütunun veri tipinin user_type_id'sini içerir. 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 sys.columns'ta belirtilen sütunun veri tipinin xml_collection_id içerir. Bu sütun, döndürülen tip bir XML şema koleksiyonuyla ilişkilendirilmiyorsa NULL döndürür.
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 NULL döndürür.
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 NULL döndürür.
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 NULL döndürür.
is_xml_document bit Geri dönen veri tipi XML ise ve bu tip tam bir XML belgesi (kök düğüm dahil) garanti altındaysa, XML parçası yerine 1 döndürür. Aksi takdirde 0 döner.
is_case_sensitive bit Sütun büyük harf duyarlı bir dizi türüyse 1 döndürür. Eğer değilse, 0 döndürür.
is_fixed_length_clr_type bit Sütun sabit uzunlukta bir CLR türüyse 1 döndürür. Eğer değilse, 0 döndürür.
source_server sysname Kaynak sunucunun adı (eğer uzaktan bir sunucudan geliyorsa). İsim, sys.servers'te göründüğü şekilde verilmiştir. Sütun yerel sunucudan geliyorsa veya hangi sunucudan geldiği belirlenemiyorsa NULL döner. Sadece gezinme bilgisi istendiğinde doldurulur.
source_database sysname Bu sonuçta sütunun yanından gelen kaynak veritabanının adı. Veritabanı belirlenemezse NULL döner. 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 belirlenemezse NULL döner. Sadece gezinme bilgisi istendiğinde doldurulur.
source_table sysname Bu sonuçta sütunun yanından gelen başlangıç tablosunun adı. Tablo belirlenemezse NULL döner. Sadece gezinme bilgisi istendiğinde doldurulur.
source_column sysname Sonuç sütununun yanındaki kaynak sütunun adı. Sütun belirlenemezse NULL döner. Sadece gezinme bilgisi istendiğinde doldurulur.
is_identity_column bit Sütun bir kimlik sütunuysa, 1 döndürür, değilse 0 döndürür. Sütunun bir kimlik sütunu olduğu belirlenemezse NULL döner.
is_part_of_unique_key bit Sütun benzersiz bir indeksin parçası ise (benzersiz ve birincil kısıtlamalar dahil) 1, değilse 0 döndürür. Sütunun benzersiz bir indeksin parçası olduğu belirlenemezse NULL döner. Sadece gezinme bilgisi istendiğinde doldurulur.
is_updateable bit Sütun güncellenebilirse 1, güncellenmiyorsa 0 döndürür. Sütunun güncellenebilir olduğu belirlenemezse NULL döner.
is_computed_column bit Sütun hesaplanan bir sütunsa, 1 döndürür, değilse 0 döndürür. Sütunun hesaplanmış bir sütun olup olmadığı belirlenemiyorsa NULL döner.
is_sparse_column_set bit Sütun seyrek bir sütunsa 1, değilse 0 döndürür. Sütunun seyrek bir sütun kümesinin parçası olduğu belirlenemezse NULL döner.
ordinal_in_order_by_list smallint Bu sütunun konumu SİRGALE LİSTEME olarak yer almaktadır. Sütun ORDER BY listesinde görünmüyorsa veya ORDER BY listesi benzersiz olarak belirlenemiyorsa NULL döner.
order_by_list_length smallint Sırayla listenin uzunluğu. ORDER BY listesi yoksa veya ORDER BY listesi benzersiz olarak belirlenemiyorsa NULL döner. Bu değerin sp_describe_first_result_set tarafından döndürülen tüm satırlar için aynı olacağını unutmayın.
order_by_is_descending smallint NULL Eğer ordinal_in_order_by_list NULL değilse, order_by_is_descending sütunu bu sütun için ORDER BY maddesinin yönünü bildirir. Aksi takdirde NULL raporu veriyor.
error_number int Fonksiyonun döndürüp getirdiği hata sayısını içerir. Hata olmazsa, sütunda NULL bulunur.
error_severity int Fonksiyonun geri getiren şiddetini içerir. Hata olmazsa, sütunda NULL bulunur.
error_state int Durum mesajını içerir. Fonksiyon tarafından geri döndü. Hata olmazsa, sütunda NULL bulunur.
error_message nvarchar(4096) Fonksiyonun geri gönderdiği mesajı içerir. Hata olmazsa, sütunda NULL bulunur.
error_type int Geri dönen hatayı temsil eden bir tam sayı içerir. Haritalar error_type_desc. 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. Haritalar error_type. Listeye Açıklamalar altındaki bakınız.

Açıklamalar

Bu fonksiyon, sp_describe_first_result_set ile aynı algoritmayı kullanır. Daha fazla bilgi için sp_describe_first_result_set (Transact-SQL) sayfasına bakınız.

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

error_type error_type Description
1 MİSC Başka şekilde açıklanmayan tüm hatalar.
2 SÖZDİZİMİ 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ç, potansiyel olarak ilk sonucu geri getirebilecek dinamik SQL nedeniyle belirlenemedi.
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ç belirlenemedi, çü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 ÖZYİNELEME Sonuç belirlenemedi çünkü toplu bir özyinelemeli ifade içeriyordu.
10 TEMPORARY_TABLE Sonuç belirlenemedi çünkü parti geçici bir tablo içeriyor ve sp_describe_first_result_set tarafından desteklenmiyor.
11 UNSUPPORTED_STATEMENT Sonuç belirlenemedi, çünkü toplu bölüm sp_describe_first_result_set tarafından desteklenmeyen bir ifade içeriyor (örneğin, FETCH, REVERT vb.).
12 OBJECT_TYPE_NOT_SUPPORTED Fonksiyona iletilen @object_id desteklenmez (yani saklanan bir prosedür değildir)
13 OBJECT_DOES_NOT_EXIST Fonksiyona aktarılan @object_id sistem kataloğunda bulunmamıştır.

Permissions

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

Örnekler

Konudaki ek örnekler sp_describe_first_result_set (Transact-SQL) kullanılarak sys.dm_exec_describe_first_result_set kullanılabilir.

A. Tek bir Transact-SQL ifadesi hakkında bilgi geri döner.

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

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

B. Bir prosedürle ilgili bilgi geri vermek

Aşağıdaki örnek, iki sonuç kümesi döndüren pr_TestProc adlı bir depolanmış prosedür oluşturur. 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 AdventureWorks2022;  
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ürme

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 AdventureWorks2022;  
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  

Ayrıca Bkz.

sp_describe_first_result_set (Transact-SQL)
sp_describe_undeclared_parameters (Transact-SQL)
sys.dm_exec_describe_first_result_set_for_object (Transact-SQL)