OBJECT_NAME (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsMicrosoft Fabric'te SQL analitiği uç noktasıMicrosoft Fabric'te DepoMicrosoft Fabric'te 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ği. 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ği. 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. SQL Server veya Azure SQL Yönetilen Örneği olarak, başka bir veritabanındaki bir object_id'ye referans veren bir sorgu yanlış sonuçlar verirNULL. Ö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.

Note

Azure SQL Veritabanı ve Microsoft Fabric'teki SQL veritabanında çapraz veritabanı sorguları mevcut değildir.

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

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

USE AdventureWorks2022;  
GO  
SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id, DB_ID(N'AdventureWorksDW2022')) AS schema_name
FROM AdventureWorksDW2022.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.

Note

Azure SQL Veritabanı ve Microsoft Fabric'teki SQL veritabanında bu USE ifade mevcut değildir. Bunun yerine, doğrudan hedef veritabanına bağlanın ve kod örneğinin geri kalanını çalıştırın.

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

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);