Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
Fungsi manajemen dinamis ini mengambil pernyataan Transact-SQL sebagai parameter dan mengembalikan metadata untuk kumpulan hasil pertama pernyataan.
sys.dm_exec_describe_first_result_set mengembalikan definisi kumpulan hasil yang sama dengan sys.dm_exec_describe_first_result_set_for_object dan mirip dengan sp_describe_first_result_set.
Sintaks
sys.dm_exec_describe_first_result_set(@tsql , @params , @include_browse_information)
Argumen
@tsql
Satu atau beberapa pernyataan Transact-SQL. Batch @tsql dapat berupa nvarchar(n) atau nvarchar(max).
@params
@params menyediakan string deklarasi untuk parameter untuk batch Transact-SQL, mirip dengan sp_executesql. Parameter dapat berupa nvarchar(n) atau nvarchar(max).
String tunggal yang berisi definisi semua parameter yang disematkan dalam batch @tsql . String harus berupa konstanta Unicode atau variabel Unicode. Setiap definisi parameter terdiri dari nama parameter dan jenis data.
n adalah tempat penampung yang menunjukkan definisi parameter tambahan. Setiap parameter yang ditentukan dalam stmt harus didefinisikan dalam @params. Jika pernyataan Transact-SQL atau batch dalam pernyataan tidak berisi parameter, @params tidak diperlukan.
NULL adalah nilai default untuk parameter ini.
@include_browse_information
Jika diatur ke 1, setiap kueri dianalisis seolah-olah memiliki FOR BROWSE opsi pada kueri. Hasilnya mencakup kolom kunci tambahan dan informasi tabel sumber.
Tabel dikembalikan
Fungsi mengembalikan metadata umum ini sebagai kumpulan hasil. Setiap baris sesuai dengan kolom dalam metadata hasil dan menjelaskan jenis dan nullability kolom dalam format yang ditampilkan dalam tabel berikut. Jika pernyataan pertama tidak ada untuk setiap jalur kontrol, fungsi mengembalikan kumpulan hasil dengan baris nol.
| Nama kolom | Jenis data | Deskripsi |
|---|---|---|
is_hidden |
bit | Menentukan bahwa kolom adalah kolom tambahan, ditambahkan untuk tujuan penjelajahan dan informasi, yang sebenarnya tidak muncul dalam kumpulan hasil. |
column_ordinal |
int | Berisi posisi ordinal kolom dalam tataan hasil. Posisi kolom pertama ditentukan sebagai 1. |
name |
nama sysname | Berisi nama kolom jika nama dapat ditentukan. Jika tidak, itu .NULL |
is_nullable |
bit | Berisi nilai berikut: Mengembalikan 1 kolom jika mengizinkan NULL nilai.Mengembalikan 0 jika kolom tidak mengizinkan NULL nilai.Mengembalikan 1 jika tidak dapat ditentukan bahwa kolom mengizinkan NULL nilai. |
system_type_id |
int | Berisi system_type_id tipe data kolom seperti yang ditentukan dalam sys.types. Untuk jenis CLR, meskipun system_type_name kolom mengembalikan NULL, kolom ini mengembalikan 240. |
system_type_name |
nvarchar(256) | Berisi nama dan argumen (seperti panjang, presisi, skala), yang ditentukan untuk jenis data kolom. Jika jenis data adalah jenis alias yang ditentukan pengguna, jenis sistem yang mendasar ditentukan di sini. Jika tipe data adalah jenis CLR yang ditentukan pengguna, dikembalikan di kolom ini. NULL |
max_length |
smallint | Panjang maksimum (dalam byte) kolom.-1 = Jenis data kolom adalah varchar(max), nvarchar(max), varbinary(max), atau xml.Untuk kolom teks , nilainya max_length adalah 16, atau nilai yang ditetapkan oleh sp_tableoption 'text in row'. |
precision |
kecil | Presisi kolom jika berbasis numerik. Jika tidak, mengembalikan 0. |
scale |
kecil | Skala kolom jika berbasis numerik. Jika tidak, mengembalikan 0. |
collation_name |
nama sysname | Nama kolater kolom jika berbasis karakter. Jika tidak, mengembalikan NULL. |
user_type_id |
int | Untuk jenis CLR dan alias, berisi user_type_id jenis data kolom seperti yang ditentukan dalam sys.types. Jika tidak, adalah NULL. |
user_type_database |
nama sysname | Untuk jenis CLR dan alias, berisi nama database tempat jenis ditentukan. Jika tidak, adalah NULL. |
user_type_schema |
nama sysname | Untuk jenis CLR dan alias, berisi nama skema di mana jenis ditentukan. Jika tidak, adalah NULL. |
user_type_name |
nama sysname | Untuk jenis CLR dan alias, berisi nama jenis . Jika tidak, adalah NULL. |
assembly_qualified_type_name |
nvarchar(4000) | Untuk jenis CLR, mengembalikan nama rakitan dan kelas yang menentukan jenisnya. Jika tidak, adalah NULL. |
xml_collection_id |
int |
xml_collection_id Berisi tipe data kolom seperti yang ditentukan dalam sys.columns. Kolom ini mengembalikan NULL jika jenis yang dikembalikan tidak terkait dengan kumpulan skema XML. |
xml_collection_database |
nama sysname | Berisi database tempat kumpulan skema XML yang terkait dengan jenis ini ditentukan. Kolom ini mengembalikan NULL jika jenis yang dikembalikan tidak terkait dengan kumpulan skema XML. |
xml_collection_schema |
nama sysname | Berisi skema di mana kumpulan skema XML yang terkait dengan jenis ini ditentukan. Kolom ini mengembalikan NULL jika jenis yang dikembalikan tidak terkait dengan kumpulan skema XML. |
xml_collection_name |
nama sysname | Berisi nama kumpulan skema XML yang terkait dengan tipe ini. Kolom ini mengembalikan NULL jika jenis yang dikembalikan tidak terkait dengan kumpulan skema XML. |
is_xml_document |
bit | Mengembalikan 1 jika tipe data yang dikembalikan adalah XML dan jenis tersebut dijamin menjadi dokumen XML lengkap (termasuk simpul akar, bukan fragmen XML). Jika tidak, mengembalikan 0. |
is_case_sensitive |
bit | Mengembalikan 1 jika kolom memiliki jenis string peka huruf besar/kecil. Mengembalikan 0 jika tidak. |
is_fixed_length_clr_type |
bit | Mengembalikan 1 jika kolom memiliki jenis CLR dengan panjang tetap. Mengembalikan 0 jika tidak. |
source_server |
nama sysname | Nama server asal (jika berasal dari server jarak jauh). Nama diberikan seperti yang muncul di sys.servers. Mengembalikan NULL jika kolom berasal dari server lokal atau jika tidak dapat ditentukan server mana yang berasal darinya. Hanya diisi jika informasi penjelajahan diminta. |
source_database |
nama sysname | Nama database asal yang dikembalikan oleh kolom dalam hasil ini. Mengembalikan NULL jika database tidak dapat ditentukan. Hanya diisi jika informasi penjelajahan diminta. |
source_schema |
nama sysname | Nama skema asal yang dikembalikan oleh kolom dalam hasil ini. Mengembalikan NULL jika skema tidak dapat ditentukan. Hanya diisi jika informasi penjelajahan diminta. |
source_table |
nama sysname | Nama tabel asal yang dikembalikan oleh kolom dalam hasil ini. Mengembalikan NULL jika tabel tidak dapat ditentukan. Hanya diisi jika informasi penjelajahan diminta. |
source_column |
nama sysname | Nama kolom asal yang dikembalikan oleh kolom hasil. Mengembalikan NULL jika kolom tidak dapat ditentukan. Hanya diisi jika informasi penjelajahan diminta. |
is_identity_column |
bit | Mengembalikan 1 jika kolom adalah kolom identitas dan 0 jika tidak. Mengembalikan NULL jika tidak dapat ditentukan bahwa kolom adalah kolom identitas. |
is_part_of_unique_key |
bit | Mengembalikan 1 jika kolom adalah bagian dari indeks unik (termasuk batasan unik dan utama) dan 0 jika tidak. Mengembalikan NULL jika tidak dapat ditentukan bahwa kolom adalah bagian dari indeks unik. Hanya diisi jika informasi penjelajahan diminta. |
is_updateable |
bit | Mengembalikan 1 jika kolom dapat diperbarui dan 0 jika tidak. Mengembalikan NULL jika tidak dapat ditentukan bahwa kolom dapat diperbarui. |
is_computed_column |
bit | Mengembalikan 1 jika kolom adalah kolom yang dihitung dan 0 jika tidak. Mengembalikan NULL jika tidak dapat ditentukan apakah kolom adalah kolom yang dihitung. |
is_sparse_column_set |
bit | Mengembalikan 1 jika kolom adalah kolom yang jarang dan 0 jika tidak. Mengembalikan NULL jika tidak dapat ditentukan bahwa kolom adalah bagian dari kumpulan kolom jarang. |
ordinal_in_order_by_list |
smallint | Posisi kolom ini ada dalam ORDER BY daftar. Mengembalikan NULL jika kolom tidak muncul dalam ORDER BY daftar, atau jika ORDER BY daftar tidak dapat ditentukan secara unik. |
order_by_list_length |
smallint | Panjang daftar.ORDER BY
NULL ditampilkan jika tidak ORDER BY ada daftar atau jika ORDER BY daftar tidak dapat ditentukan secara unik. Nilai ini sama untuk semua baris yang dikembalikan oleh sp_describe_first_result_set. |
order_by_is_descending |
smallint |
ordinal_in_order_by_list Jika tidak NULL, order_by_is_descending kolom melaporkan arah ORDER BY klausa untuk kolom ini. Jika tidak, ia melaporkan NULL. |
error_number |
int | Berisi nomor kesalahan yang dikembalikan oleh fungsi . Jika tidak ada kesalahan yang terjadi, kolom berisi NULL. |
error_severity |
int | Berisi tingkat keparahan yang dikembalikan oleh fungsi . Jika tidak ada kesalahan yang terjadi, kolom berisi NULL. |
error_state |
int | Berisi pesan status yang dikembalikan oleh fungsi . Jika tidak ada kesalahan yang terjadi, kolom berisi NULL. |
error_message |
nvarchar(4096) | Berisi pesan yang dikembalikan oleh fungsi. Jika tidak ada kesalahan yang terjadi, kolom berisi NULL. |
error_type |
int | Berisi bilangan bulat yang mewakili kesalahan yang dikembalikan. Memetakan ke error_type_desc. Lihat daftar di bawah keterangan. |
error_type_desc |
nvarchar(60) | Berisi string huruf besar pendek yang mewakili kesalahan yang dikembalikan. Memetakan ke error_type. Lihat daftar di bawah keterangan. |
Keterangan
Fungsi ini menggunakan algoritma yang sama dengan sp_describe_first_result_set. Untuk informasi selengkapnya, lihat sp_describe_first_result_set.
Tabel berikut mencantumkan jenis kesalahan dan deskripsinya.
error_type |
error_type |
Deskripsi |
|---|---|---|
1 |
MISC |
Semua kesalahan yang tidak dijelaskan lain. |
2 |
SYNTAX |
Terjadi kesalahan sintaks dalam batch. |
3 |
CONFLICTING_RESULTS |
Hasilnya tidak dapat ditentukan karena konflik antara dua kemungkinan pernyataan pertama. |
4 |
DYNAMIC_SQL |
Hasilnya tidak dapat ditentukan karena SQL dinamis yang berpotensi mengembalikan hasil pertama. |
5 |
CLR_PROCEDURE |
Hasilnya tidak dapat ditentukan karena prosedur tersimpan CLR berpotensi mengembalikan hasil pertama. |
6 |
CLR_TRIGGER |
Hasilnya tidak dapat ditentukan karena pemicu CLR berpotensi mengembalikan hasil pertama. |
7 |
EXTENDED_PROCEDURE |
Hasilnya tidak dapat ditentukan karena prosedur tersimpan yang diperpanjang berpotensi mengembalikan hasil pertama. |
8 |
UNDECLARED_PARAMETER |
Hasilnya tidak dapat ditentukan karena jenis data satu atau beberapa kolom kumpulan hasil berpotensi bergantung pada parameter yang tidak dideklarasikan. |
9 |
RECURSION |
Hasilnya tidak dapat ditentukan karena batch berisi pernyataan rekursif. |
10 |
TEMPORARY_TABLE |
Hasilnya tidak dapat ditentukan karena batch berisi tabel sementara dan tidak didukung oleh sp_describe_first_result_set . |
11 |
UNSUPPORTED_STATEMENT |
Hasilnya tidak dapat ditentukan karena batch berisi pernyataan yang tidak didukung oleh sp_describe_first_result_set (misalnya, FETCH, , REVERTdll.). |
12 |
OBJECT_TYPE_NOT_SUPPORTED |
Fungsi @object_id yang diteruskan ke fungsi tidak didukung (yaitu, ini bukan prosedur tersimpan). |
13 |
OBJECT_DOES_NOT_EXIST |
Fungsi yang @object_id diteruskan ke tidak ditemukan di katalog sistem. |
Izin
Memerlukan izin untuk menjalankan argumen @tsql .
Contoh
Sampel kode dalam artikel ini menggunakan database sampel AdventureWorks2025 atau AdventureWorksDW2025, yang dapat Anda unduh dari halaman beranda Sampel dan Proyek Komunitas Microsoft SQL Server.
Anda dapat mengadaptasi contoh dalam artikel sp_describe_first_result_set untuk menggunakan sys.dm_exec_describe_first_result_set.
J. Mengembalikan informasi tentang satu laporan Transact-SQL
Kode berikut mengembalikan informasi tentang hasil pernyataan Transact-SQL.
USE @AdventureWorks2025;
SELECT *
FROM sys.dm_exec_describe_first_result_set (
N'SELECT object_id, name, type_desc FROM sys.indexes', null, 0
);
B. Mengembalikan informasi tentang prosedur
Contoh berikut membuat prosedur tersimpan bernama pr_TestProc yang mengembalikan dua set hasil. Kemudian contoh menunjukkan bahwa sys.dm_exec_describe_first_result_set mengembalikan informasi tentang kumpulan hasil pertama dalam prosedur.
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. Mengembalikan metadata dari batch yang berisi beberapa pernyataan
Contoh berikut mengevaluasi batch yang berisi dua pernyataan Transact-SQL. Kumpulan hasil menjelaskan kumpulan hasil pertama yang dikembalikan.
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;