Udostępnij za pośrednictwem


OBJECT_ID (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricMagazyn w usłudze Microsoft FabricBaza 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';