OBJECT_NAME (T-SQL)
Berlaku untuk: SQL Server 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).
Sintaks
OBJECT_NAME ( object_id [, database_id ] )
Argumen
object_id
Adalah 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
Adalah 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. 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 pemilihan, 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 dalam database lain mengembalikan NULL atau hasil yang salah. Misalnya, dalam kueri berikut konteks database saat ini adalah AdventureWorks2022. Mesin Database mencoba mengembalikan nama objek untuk ID objek yang ditentukan dalam database tersebut alih-alih database yang ditentukan dalam klausa FROM kueri. Oleh karena itu, informasi yang salah dikembalikan.
USE AdventureWorks2022;
GO
SELECT DISTINCT OBJECT_NAME(object_id)
FROM master.sys.objects;
GO
Anda dapat 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 AdventureWorks2022;
GO
SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id, 1) AS schema_name
FROM master.sys.objects;
GO
Contoh
J. 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 AdventureWorks2022;
GO
DECLARE @MyID INT;
SET @MyID = (SELECT OBJECT_ID('AdventureWorks2022.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)