OBJECT_NAME (Transact-SQL)

Berlaku untuk: SQL Server (semua versi yang didukung) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

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

tautan topikIkon Konvensi Sintaks Transact-SQL

Sintaks

OBJECT_NAME ( object_id [, database_id ] )  

Catatan

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

Argumen

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

database_id
Adalah ID database tempat objek akan dicari. database_idint.

Jenis Pengembalian

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 aman yang dimiliki pengguna atau di mana pengguna telah diberikan izin. Ini berarti bahwa fungsi bawaan yang memancarkan metadata seperti OBJECT_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 pilih, dalam klausa WHERE, dan di mana saja ekspresi diizinkan. Untuk informasi selengkapnya, lihat Ekspresi dan WHERE.

Nilai yang dikembalikan oleh fungsi sistem ini menggunakan kolase database saat ini.

Secara default, mesin database SQL Server mengasumsikan bahwa object_id berada dalam konteks database saat ini. Kueri yang mereferensikan object_id di database lain mengembalikan NULL atau hasil yang salah. Misalnya, dalam kueri berikut konteks database saat ini adalah AdventureWorks2019. Mesin Database mencoba mengembalikan nama objek untuk ID objek yang ditentukan dalam database tersebut, bukan database yang ditentukan dalam klausa FROM kueri. Oleh karena itu, informasi yang salah dikembalikan.

USE AdventureWorks2012;  
GO  
SELECT DISTINCT OBJECT_NAME(object_id)  
FROM master.sys.objects;  
GO  

Anda bisa mengatasi nama objek dalam konteks database lain dengan menentukan ID database. Contoh berikut menentukan ID database untuk master database dalam OBJECT_SCHEMA_NAME fungsi dan mengembalikan hasil yang benar.

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

Contoh

A. Menggunakan OBJECT_NAME dalam klausa WHERE

Contoh berikut mengembalikan kolom dari sys.objects tampilan katalog untuk objek yang ditentukan oleh OBJECT_NAME dalam WHERE klausa SELECT pernyataan.

USE AdventureWorks2012;  
GO  
DECLARE @MyID INT;  
SET @MyID = (SELECT OBJECT_ID('AdventureWorks2012.Production.Product',  
    'U'));  
SELECT name, object_id, type_desc  
FROM sys.objects  
WHERE name = OBJECT_NAME(@MyID);  
GO  

B. Mengembalikan nama skema objek dan nama objek

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_text  
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  

C. Mengembalikan nama objek tiga bagian

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.

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  

Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)

D. Menggunakan OBJECT_NAME dalam klausa WHERE

Contoh berikut mengembalikan kolom dari sys.objects tampilan katalog untuk objek yang ditentukan oleh OBJECT_NAME dalam WHERE klausa SELECT pernyataan. (Nomor objek Anda (274100017 dalam contoh di bawah) akan berbeda. Untuk menguji contoh ini, cari nomor objek yang valid dengan menjalankan SELECT name, object_id FROM sys.objects; di database Anda.)

SELECT name, object_id, type_desc  
FROM sys.objects  
WHERE name = OBJECT_NAME(274100017);  

Lihat juga

Fungsi Metadata (Transact-SQL)
OBJECT_DEFINITION (T-SQL)
OBJECT_ID (T-SQL)