Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Punkt końcowy analizy SQL w usłudze Microsoft Fabric
Magazyn w usłudze Microsoft Fabric
Baza danych SQL w usłudze Microsoft Fabric (wersja zapoznawcza)
Zwraca numer identyfikacyjny obiektu bazy danych obiektu o zakresie schematu.
Obiekty, które nie są objęte zakresem schematu, takie jak wyzwalacze języka DDL (Data Definition Language), nie mogą być odpytywane za pomocą polecenia OBJECT_ID
. W przypadku obiektów, które nie znajdują się w widoku katalogu sys.objects , uzyskaj numery identyfikacyjne obiektów, wysyłając zapytanie do odpowiedniego widoku wykazu. Aby na przykład zwrócić numer identyfikacyjny obiektu wyzwalacza DDL, użyj polecenia SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'
.
Transact-SQL konwencje składni
Składnia
OBJECT_ID ( ' [ database_name . [ schema_name ] . | schema_name . ]
object_name' [ , 'object_type' ] )
Argumenty (w programowaniu)
N'object_name'
Obiekt, który ma być używany. object_name jest varchar lub nvarchar. Wartość varcharobject_name jest niejawnie konwertowana na nvarchar. Określanie nazw baz danych i schematów jest opcjonalne.
N'object_type'
Typ obiektu o zakresie schematu. object_type jest varchar lub nvarchar. Wartość varcharobject_type jest niejawnie konwertowana na nvarchar. Aby uzyskać listę typów obiektów, zobacz kolumnę typu w sys.objects (Transact-SQL).
Typy zwracane
int
Wyjątki
W przypadku indeksu OBJECT_ID
przestrzennego zwraca wartość NULL
.
Zwraca wartość NULL
błędu.
Użytkownik może wyświetlać tylko metadane zabezpieczanych, które użytkownik jest właścicielem, lub na którym użytkownik ma uprawnienia. Oznacza to, że wbudowane funkcje emitujące metadane, takie jak OBJECT_ID
mogą zwracać NULL
, jeśli użytkownik nie ma żadnych uprawnień do obiektu. Aby uzyskać więcej informacji, zobacz Konfiguracja widoczności metadanych.
Uwagi
Jeśli parametr funkcji systemowej jest opcjonalny, przyjmuje się, że przyjmuje się bieżącą bazę danych, komputer hosta, użytkownika serwera lub użytkownika bazy danych. Zawsze należy postępować zgodnie z wbudowanymi funkcjami z nawiasami.
Po określeniu tymczasowej nazwy tabeli nazwa bazy danych musi znajdować się przed tymczasową nazwą tabeli, chyba że bieżąca baza danych to tempdb
. Przykład:
SELECT OBJECT_ID('tempdb..#mytemptable');
Funkcje systemowe mogą być używane na liście wyboru, w klauzuli WHERE
i w dowolnym miejscu, w jakim jest dozwolone wyrażenie. Aby uzyskać więcej informacji, zobacz Wyrażenia (Transact-SQL) i WHERE (Transact-SQL).
Przykłady
Przykłady kodu w tym artykule korzystają z przykładowej bazy danych AdventureWorks2022
lub AdventureWorksDW2022
, którą można pobrać ze strony głównej Przykładów programu Microsoft SQL Server i projektów społeczności.
Odp. Zwracanie identyfikatora obiektu dla określonego obiektu
Poniższy przykład zwraca identyfikator obiektu tabeli Production.WorkOrder
w AdventureWorks2022
bazie danych.
USE master;
GO
SELECT OBJECT_ID(N'AdventureWorks2022.Production.WorkOrder') AS 'Object ID';
GO
B. Sprawdź, czy obiekt istnieje
Poniższy przykład sprawdza istnienie określonej tabeli, sprawdzając, czy tabela ma identyfikator obiektu. Jeśli tabela istnieje, zostanie usunięta. Jeśli tabela nie istnieje, DROP TABLE
instrukcja nie jest wykonywana.
USE AdventureWorks2022;
GO
IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL
DROP TABLE dbo.AWBuildVersion;
GO
C. Użyj OBJECT_ID, aby określić wartość parametru funkcji systemowej
Poniższy przykład zwraca informacje dotyczące wszystkich indeksów Person.Address
i partycji tabeli w AdventureWorks2022
bazie danych przy użyciu funkcji sys.dm_db_index_operational_stats .
Uwaga / Notatka
Ta składnia nie jest obsługiwana przez bezserwerową pulę SQL w usłudze Azure Synapse Analytics.
Jeśli używasz funkcji DB_ID
Transact-SQL i OBJECT_ID
zwracasz wartość parametru, zawsze upewnij się, że zwracany jest prawidłowy identyfikator. Jeśli nie można odnaleźć nazwy bazy danych lub obiektu, na przykład gdy nie istnieją lub są niepoprawnie napisane, obie funkcje zwracają wartość NULL
. Funkcja sys.dm_db_index_operational_stats
interpretuje NULL
jako wartość wieloznaczny określającą wszystkie bazy danych lub wszystkie obiekty. Ponieważ ta operacja może być niezamierzona, w przykładzie w tej sekcji pokazano bezpieczny sposób określania identyfikatorów baz danych i obiektów.
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
Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)
D. Zwracanie identyfikatora obiektu dla określonego obiektu
Poniższy przykład zwraca identyfikator obiektu tabeli FactFinance
w bazie danych AdventureWorksPDW2022 .
SELECT OBJECT_ID('AdventureWorksPDW2012.dbo.FactFinance') AS 'Object ID';