Aracılığıyla paylaş


OBJECT_ID (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ı bir nesnenin veritabanı nesne tanımlama numarasını döndürür.

Veri Tanımı Dili (DDL) tetikleyicileri gibi şema kapsamlı olmayan nesneler kullanılarak OBJECT_IDsorgulanamaz. sys.objects katalog görünümünde bulunmayan nesneler için, uygun katalog görünümünü sorgulayarak nesne tanımlama numaralarını alın. Örneğin, bir DDL tetikleyicisinin nesne tanımlama numarasını döndürmek için kullanın SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'.

Transact-SQL söz dizimi kuralları

Sözdizimi

OBJECT_ID ( ' [ database_name . [ schema_name ] . | schema_name . ]
  object_name' [ , 'object_type' ] )

Tartışmalar

N'object_name'

Kullanılacak nesne. object_namevarchar veya nvarchar şeklindedir. object_namevarchar değeri örtük olarak nvarchar'a dönüştürülür. Veritabanı ve şema adlarını belirtmek isteğe bağlıdır.

N'object_type'

Şema kapsamlı nesne türü. object_typevarchar veya nvarchar şeklindedir. object_type'nin varchar değeri örtük olarak nvarchar'a dönüştürülür. Nesne türlerinin listesi için sys.objects (Transact-SQL)içindeki tür sütununa bakın.

Dönüş türleri

int

Özel durumlar

Uzamsal dizin için döndürür OBJECT_IDNULL.

Hata döndürür NULL .

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

Açıklamalar

Bir sistem işlevinin parametresi isteğe bağlı olduğunda, geçerli veritabanı, konak bilgisayar, sunucu kullanıcısı veya veritabanı kullanıcısı varsayılır. Yerleşik işlevleri her zaman parantez içinde izlemeniz gerekir.

Geçici bir tablo adı belirtildiğinde, geçerli tempdbveritabanı olmadığı sürece veritabanı adı geçici tablo adından önce gelmelidir. Örneğin:

SELECT OBJECT_ID('tempdb..#mytemptable');

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

Örnekler

Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.

A. Belirtilen nesne için nesne kimliğini döndürme

Aşağıdaki örnek, veritabanındaki Production.WorkOrder tablonun AdventureWorks2025 nesne kimliğini döndürür.

USE master;
GO

SELECT OBJECT_ID(N'AdventureWorks2022.Production.WorkOrder') AS 'Object ID';
GO

B. Bir nesnenin var olduğunu doğrulama

Aşağıdaki örnek, tablonun nesne kimliğine sahip olduğunu doğrulayarak belirtilen tablonun varlığını denetler. Tablo varsa silinir. Tablo yoksa, DROP TABLE deyimi yürütülemez.

USE AdventureWorks2022;
GO

IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL
DROP TABLE dbo.AWBuildVersion;
GO

C. Sistem işlevi parametresinin değerini belirtmek için OBJECT_ID kullanma

Aşağıdaki örnek, Person.Address işlevini kullanarak veritabanındaki AdventureWorks2025 tablonun tüm dizinleri ve bölümleri için bilgi döndürür.

Uyarı

Bu söz dizimi, Azure Synapse Analytics'teki sunucusuz SQL havuzu tarafından desteklenmez.

Transact-SQL işlevlerini DB_ID kullandığınızda ve OBJECT_ID parametre değeri döndürmek için her zaman geçerli bir kimlik döndürdüğünüzden emin olun. Veritabanı veya nesne adı bulunamazsa (örneğin, mevcut olmadığında veya yanlış yazıldığında), her iki işlev de döndürür NULL. işlevi, sys.dm_db_index_operational_stats tüm veritabanlarını veya tüm nesneleri belirten bir joker karakter değeri olarak yorumlar NULL . Bu işlem kasıtsız olabileceğinden, bu bölümdeki örnekte veritabanı ve nesne kimliklerini belirlemenin güvenli yolu gösterilmektedir.

DECLARE @db_id INT;
DECLARE @object_id INT;

SET @db_id = DB_ID(N'AdventureWorks2022');
SET @object_id = OBJECT_ID(N'AdventureWorks2022.Person.Address');

IF @db_id IS NULL
BEGIN
    PRINT N'Invalid database';
END;
ELSE IF @object_id IS NULL
BEGIN
    PRINT N'Invalid object';
END;
ELSE
BEGIN
    SELECT *
    FROM [sys].dm_db_index_operational_stats(@db_id, @object_id, NULL, NULL);
END;
GO

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

D. Belirtilen nesne için nesne kimliğini döndürme

Aşağıdaki örnekFactFinance veritabanındaki tablonun nesne kimliğini döndürür.

SELECT OBJECT_ID('AdventureWorksPDW2012.dbo.FactFinance') AS 'Object ID';