Aracılığıyla paylaş


OBJECT_NAME (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

Şema kapsamlı nesneler için veritabanı nesne adını döndürür. Şema kapsamlı nesnelerin listesi için bkz. sys.objects (Transact-SQL).

Transact-SQL söz dizimi kuralları

Sözdizimi

OBJECT_NAME ( object_id [, database_id ] )  

Tartışmalar

object_id
Kullanılacak nesnenin kimliğidir. object_idint'dir ve belirtilen veritabanında veya geçerli veritabanı bağlamında şema kapsamlı bir nesne olduğu varsayılır.

database_id
Nesnenin aranacağı veritabanının kimliğidir. database_idint.

Dönüş Türleri

sysname

Özel durumlar

Hata durumunda veya çağıranın nesneyi görüntüleme izni yoksa NULL döndürür. Hedef veritabanında AUTO_CLOSE seçeneği AÇIK olarak ayarlandıysa, işlev veritabanını açar.

Bir kullanıcı yalnızca kullanıcıya ait olan veya kullanıcıya izin verilen güvenli hale getirilebilir öğeler meta verilerini görüntüleyebilir. Bu, OBJECT_NAME gibi meta veri yayan yerleşik işlevlerin, kullanıcının nesne üzerinde herhangi bir izni yoksa NULL döndürebileceği anlamına gelir. Daha fazla bilgi için bkz. meta veri görünürlüğü yapılandırması .

İzinler

Nesne üzerinde ANY izni gerektirir. Veritabanı kimliği belirtmek için veritabanına BAĞLANMA izni de gerekir veya konuk hesabı etkinleştirilmelidir.

Açıklamalar

Sistem işlevleri seçme listesinde, WHERE yan tümcesinde ve bir ifadeye izin verilen her yerde kullanılabilir. Daha fazla bilgi için bkz. İfadeler ve WHERE.

Bu sistem işlevi tarafından döndürülen değer geçerli veritabanının harmanlamasını kullanır.

Varsayılan olarak, SQL Server Veritabanı Altyapısı object_id geçerli veritabanı bağlamında olduğunu varsayar. Başka bir veritabanındaki bir object_id başvuran sorgu NULL veya yanlış sonuçlar döndürür. Örneğin, aşağıdaki sorguda mevcut veritabanının bağlamı AdventureWorks2025'tir. Veritabanı Altyapısı, sorgunun FROM yan tümcesinde belirtilen veritabanı yerine bu veritabanında belirtilen nesne kimliği için bir nesne adı döndürmeye çalışır. Bu nedenle, yanlış bilgiler döndürülür.

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

Bir veritabanı kimliği belirterek nesne adlarını başka bir veritabanı bağlamında çözümleyebilirsiniz. Aşağıdaki örnek, işlevdeki master veritabanının OBJECT_SCHEMA_NAME veritabanı kimliğini belirtir ve doğru sonuçları döndürür.

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

Örnekler

A. WHERE yan tümcesinde OBJECT_NAME kullanma

Aşağıdaki örnek, deyiminin sys.objects yan tümcesinde tarafından OBJECT_NAME belirtilen nesne için katalog görünümünden WHERESELECT sütunlar döndürür.

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. Nesne şema adını ve nesne adını döndürme

Aşağıdaki örnek, geçici veya hazırlanmış deyimler olmayan tüm önbelleğe alınmış sorgu planları için nesne şeması adını, nesne adını ve SQL metnini döndürür.

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. Üç bölümlü nesne adlarını döndürme

Aşağıdaki örnek, tüm veritabanlarındaki tüm nesneler için dinamik yönetim görünümündeki sys.dm_db_index_operational_stats diğer tüm sütunlarla birlikte veritabanı, şema ve nesne adını döndürür.

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  

Örnekler: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)

D. WHERE yan tümcesinde OBJECT_NAME kullanma

Aşağıdaki örnek, deyiminin sys.objects yan tümcesinde tarafından OBJECT_NAME belirtilen nesne için katalog görünümünden WHERESELECT sütunlar döndürür. (Nesne numaranız (aşağıdaki örnekte 274100017) farklı olacaktır. Bu örneği test etmek için veritabanınızda yürüterek SELECT name, object_id FROM sys.objects; geçerli bir nesne numarası arayın.)

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

Ayrıca Bkz.

Meta Veri İşlevleri (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)