Share via


OBJECT_ID (Transact-SQL)

Şema kapsamlı nesne veritabanı nesne kimliği numarasını döndürür.

Önemli notÖnemli

DDL tetikleyiciler gibi şema kapsamlı, olmayan nesneleri OBJECT_ID kullanarak sorgulanamıyor.İçinde bulunan nesneler için sys.objects Katalog görünümü, uygun katalog görünümü sorgulayarak nesne tanımlama numaraları elde edilir.Örneğin, bir DDL Tetikleyici nesne kimliği sayısını döndürmek için kullanın SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

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

Bağımsız değişkenler

  • 'object_name'
    Kullanılacak nesnesidir.object_nameis either varchar or nvarchar.object_name Olan varchar, onu örtülü olarak dönüştürülür için nvarchar.Veritabanı ve şema adları belirtilmesi isteğe bağlıdır.

  • 'object_type'
    Şema kapsamlı nesne türüdür.object_typeis either varchar or nvarchar.object_type Olan varchar, onu örtülü olarak dönüştürülür için nvarchar.Nesne türlerinin listesi için bkz: türü sütun sys.Objects (Transact-SQL).

Dönüş Türleri

int

Kural dışı durumlar

Kayma dizin için OBJECT_ID null döndürür.

null hatası döndürür.

Bir kullanıcı yalnızca, kullanıcının sahip olduğu veya kullanıcı izni verildi güvenli hale Getirilebilenler meta veriler görüntüleyebilirsiniz.Yani o meta veriler-yayma, yerleşik işlevler gibi OBJECT_ID kullanıcı nesnesinde herhangi bir izni yoksa null döndürebilir.Daha fazla bilgi için, bkz. Meta veri görünürlük yapılandırma ve Meta veri görünürlük sorun giderme.

Açıklamalar

Sistem işlev için parametre isteğe bağlı olduğunda, geçerli veritabanının, ana bilgisayar, sunucu kullanıcı veya veritabanı kullanıcı kabul edilir.Yerleşik işlevleri, her zaman ayraç gelmelidir.

Geçici tablo adı belirtildiğinde, geçerli veritabanı olmadıkça veritabanı adı geçici tablo adından önce gelmelidir tempdb.Örneğin: SELECT OBJECT_ID('tempdb..#mytemptable').

Sistem işlevleri seçme listesinde where yan tümceiçinde kullanılan ve bir ifade herhangi bir izin verilmez.Daha fazla bilgi için, bkz. Deyimler (Transact-SQL) ve Burada (Transact-SQL).

Örnekler

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

Aşağıdaki örnek, nesne Kimliğini döndürür Production.WorkOrder tablo AdventureWorks2008R2veritabanı.

USE master;
GO
SELECT OBJECT_ID(N'AdventureWorks2008R2.Production.WorkOrder') AS 'Object ID';
GO

B.Bir nesne varolduğunu doğrulama

Aşağıdaki örnek tablo nesne kimliği olmadığını doğrulayarak belirtilen tablo varlığını denetler.tablo varsa silinir.tablo yoksa, DROP TABLEdeyim yürütüldüğünde değil.

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

C.Sistem işlev parametre değeri belirtmek için OBJECT_ID kullanma

Aşağıdaki örnek tüm dizinler ve bölümleri için bilgi verir Person.Address tablo AdventureWorks2008R2 kullanarak veritabanı sys.dm_db_index_operational_stats işlev.

Önemli notÖnemli

Kullanırken Transact-SQL işlevleri DB_ID ve OBJECT_ID bir parametre değeri döndürmek için her zaman geçerli bir kimliği döner emin olun.Veritabanı veya nesne adı, ne zaman onlar yok veya yanlış yazılmış gibi bulunamazsa, her iki işlevi null döndürür.Sys.dm_db_index_operational_statsişlev null tüm veritabanları veya tüm nesneleri belirtir bir joker karakter değeri yorumlar. Bu kasıtlı olmayan bir işlem olduğundan, bu bölümdeki örnekler veritabanı ve nesne kimliklerini belirlemek için en güvenli yolu göstermektedir.

DECLARE @db_id int;
DECLARE @object_id int;
SET @db_id = DB_ID(N'AdventureWorks2008R2');
SET @object_id = OBJECT_ID(N'AdventureWorks2008R2.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