OBJECT_ID (Transact-SQL)
Zwraca numer identyfikacyjny obiektu bazy danych dla obiektu o zakresie schematu.
Ważne: |
---|
Obiekty, które nie są schematu zakresie, takich jak wyzwalacze DDL nie można zbadać za pomocą OBJECT_ID.Dla obiektów, które nie znajdują się w sys.objects wykazu widoku, uzyskać numerów identyfikacyjnych obiektu przez badanie wykazu odpowiedni widok.Na przykład aby zwrócić numer identyfikacyjny obiektu DDL wyzwalacz, użyj SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'. |
Składnia
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]
object_name' [ ,'object_type' ] )
Argumenty
'object_name'
Jest to obiekt ma być używany.object_nameis either varchar or nvarchar.Jeśli object_name jest varchar, są niejawnie konwertowane na nvarchar.Określanie nazwy bazy danych i schematu jest opcjonalne.'object_type'
Jest to typ obiektu o zakresie schematu.object_typeis either varchar or nvarchar.Jeśli object_type jest varchar, są niejawnie konwertowane na nvarchar.Lista typów obiektów, zobacz typu kolumna w sys.Objects (Transact-SQL).
Zwracane typy
int
Wyjątki
Indeks przestrzenny OBJECT_ID zwraca wartość NULL.
Zwraca wartość NULL na błąd.
Użytkownik może tylko przeglądać metadane securables, który użytkownik jest właścicielem lub dla którego użytkownik ma uprawnienia.Oznacza to, że metadane-wysyłających, funkcje wbudowane takie jak OBJECT_ID może zwracać wartość NULL, jeśli użytkownik nie ma żadnych uprawnień do obiektu.Aby uzyskać więcej informacji, zobacz Konfiguracja widoczność metadanych i Rozwiązywanie problemów z metadanych widoczności.
Uwagi
Gdy parametr do funkcja systemowej jest opcjonalny, przyjmowana jest bieżąca baza danych, komputer-host, użytkownik serwera lub bazy danych użytkownika.Funkcje wbudowane zawsze musi być stosowana w nawiasach.
Po określeniu nazwy tymczasowej tabela nazwa bazy danych muszą pochodzić przed nazwą tymczasowej tabela , chyba że bieżąca baza danych jest tempdb.Na przykład: SELECT OBJECT_ID('tempdb..#mytemptable').
Funkcje systemu mogą być używane w liście, w którym klauzulai dowolnym wyrażenie jest dozwolone.Aby uzyskać więcej informacji, zobacz Wyrażenia języka Transact-SQL) i GDZIE (Transact-SQL).
Przykłady
A.Zwraca identyfikator obiektu dla określonego obiektu
Poniższy przykład zwraca identyfikator obiektu dla Production.WorkOrder tabela w AdventureWorks2008R2bazy danych.
USE master;
GO
SELECT OBJECT_ID(N'AdventureWorks2008R2.Production.WorkOrder') AS 'Object ID';
GO
B.Weryfikowanie, że istnieje obiekt
Poniższy przykład sprawdza istnienie określonej tabela , zweryfikuj, że tabela ma identyfikator obiektu.Jeżeli istnieje tabela jest usuwana.Jeśli tabela nie istnieje, DROP TABLE instrukcja nie jest wykonywany.
USE AdventureWorks2008R2;
GO
IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL
DROP TABLE dbo.AWBuildVersion;
GO
C.Aby określić wartość parametru funkcja systemu przy użyciu OBJECT_ID
Poniższy przykład zwraca informacje dotyczące wszystkich indeksów i partycje o Person.Address tabela w AdventureWorks2008R2 bazy danych za pomocą sys.dm_db_index_operational_stats funkcja.
Ważne: |
---|
Kiedy używasz Transact-SQL Funkcje DB_ID i OBJECT_ID zwracają wartość parametru zawsze upewnij się, że zwracany jest prawidłowy identyfikator.Jeśli nie można odnaleźć nazwy bazy danych lub obiekt, na przykład gdy nie istnieją lub są napisane błędnie, obie zwracają wartość NULL.Sys.dm_db_index_operational_statsfunkcja interpretuje wartość NULL jako wartość symboli wieloznacznych, która określa wszystkie bazy danych lub wszystkich obiektów. Ponieważ może to być niezamierzoną, przykłady w tej sekcji wykazać bezpieczny sposób, aby określić bazę danych i identyfikatory obiektów. |
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