OBJECT_SCHEMA_NAME (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

Mengembalikan nama skema database untuk objek dengan cakupan skema. Untuk daftar objek dengan cakupan skema, lihat sys.objects (Transact-SQL).

Catatan

Fungsi OBJECT_SCHEMA_NAME ini hanya didukung di kumpulan SQL khusus di Azure Synapse Analytics.

Konvensi sintaks transact-SQL

Sintaksis

OBJECT_SCHEMA_NAME ( object_id [, database_id ] )  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

object_id

ID objek yang akan digunakan. object_id int dan diasumsikan sebagai objek cakupan skema dalam database yang ditentukan, atau dalam konteks database saat ini.

database_id

ID database tempat objek akan dicari. database_id int.

Jenis Kembalian

nama sysname

Pengecualian

Mengembalikan NULL pada kesalahan atau jika penelepon tidak memiliki izin untuk melihat objek. Jika database target memiliki opsi AUTO_CLOSE diatur ke AKTIF, fungsi akan membuka database.

Pengguna hanya dapat melihat metadata yang dapat diamankan yang dimiliki pengguna atau di mana pengguna telah diberikan izin. Fungsi bawaan yang memancarkan metadata seperti OBJECT_SCHEMA_NAME dapat mengembalikan NULL jika pengguna tidak memiliki izin apa pun pada objek. Untuk informasi selengkapnya, lihat Konfigurasi Visibilitas Metadata.

Izin

Memerlukan izin APA PUN pada objek. Untuk menentukan ID database, izin CONNECT ke database juga diperlukan, atau akun tamu harus diaktifkan.

Keterangan

Fungsi sistem dapat digunakan dalam daftar pemilihan, dalam klausa WHERE, dan di mana saja ekspresi diizinkan. Untuk informasi selengkapnya, lihat Ekspresi dan WHERE.

Tataan hasil yang dikembalikan oleh fungsi sistem ini menggunakan kolase database saat ini.

Jika database_id tidak ditentukan, Mesin Database SQL Server mengasumsikan bahwa object_id berada dalam konteks database saat ini. Kueri yang mereferensikan object_id dalam database lain mengembalikan NULL atau hasil yang salah. Misalnya, dalam kueri berikut, konteks database saat ini adalah AdventureWorks2022. Mesin Database mencoba mengembalikan nama skema objek untuk yang ditentukan object_id dalam database saat ini alih-alih database yang ditentukan dalam klausa FROM kueri. Oleh karena itu, informasi yang salah dikembalikan.

SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id)  
FROM master.sys.objects;  

Contoh berikut menentukan ID database untuk master database dalam OBJECT_SCHEMA_NAME fungsi dan mengembalikan hasil yang benar.

SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id, 1) AS schema_name  
FROM master.sys.objects;   

Contoh

J. Mengembalikan nama skema objek dan nama objek

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Contoh berikut mengembalikan nama skema objek, nama objek, dan teks SQL untuk semua rencana kueri yang di-cache yang bukan pernyataan ad hoc atau pernyataan yang disiapkan.

SELECT DB_NAME(st.dbid) AS database_name,   
    OBJECT_SCHEMA_NAME(st.objectid, st.dbid) AS schema_name,  
    OBJECT_NAME(st.objectid, st.dbid) AS object_name,   
    st.text AS query_statement  
FROM sys.dm_exec_query_stats AS qs  
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st  
WHERE st.objectid IS NOT NULL;  
GO  

B. Mengembalikan nama objek tiga bagian

Contoh berikut mengembalikan database, skema, dan nama objek untuk semua objek dalam konteks database saat ini.

SELECT QUOTENAME(DB_NAME(db_id()))   
    + N'.'   
    + QUOTENAME(OBJECT_SCHEMA_NAME(object_id, db_id()))   
    + N'.'   
    + QUOTENAME(OBJECT_NAME(object_id, db_id()))  
    , *   
FROM sys.objects;
GO  

Contoh berikut mengembalikan database, skema, dan nama objek bersama dengan semua kolom lain dalam sys.dm_db_index_operational_stats tampilan manajemen dinamis untuk semua objek di semua database.

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

SELECT QUOTENAME(DB_NAME(database_id))   
    + N'.'   
    + QUOTENAME(OBJECT_SCHEMA_NAME(object_id, database_id))   
    + N'.'   
    + QUOTENAME(OBJECT_NAME(object_id, database_id))  
    , *   
FROM sys.dm_db_index_operational_stats(null, null, null, null);  
GO  

Langkah berikutnya