Eksportuj (0) Drukuj
Rozwiń wszystko
Expand Minimize
Ten artykuł był przetłumaczony komputerowo. Oryginalny tekst zobaczysz, umieszczając wskaźnik myszy nad zdaniami w artykule. Więcej informacji.
Tłumaczenie
Oryginał

OBJECT_ID (język Transact-SQL)

Zwraca numer identyfikacyjny obiektu bazy danych należącego do schematu.

Ważna informacja Ważne:

Obiekty nienależące do schematów, takie jak wyzwalacze DDL, nie mogą być przedmiotem zapytań wykonywanych przez funkcję OBJECT_ID. W przypadku obiektów nieujętych w widoku wykazu sys.objects numery identyfikacyjne można sprawdzić przez wykonanie zapytania na odpowiednim widoku wykazu. Aby na przykład zwrócić numer identyfikacyjny wyzwalacza DDL, należy wykonać instrukcję SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'.

Ikona łącza do tematu Konwencje składni języka Transact-SQL


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

' object_name '

Obiekt, który ma zostać użyty. Parametr object_name ma typ danych varchar lub nvarchar. W przypadku typu danych varchar jest niejawnie konwertowany na typ nvarchar. Podanie nazw bazy danych i schematu jest opcjonalne.

' object_type '

Typ obiektu należącego do schematu. Parametr object_type ma typ danych varchar lub nvarchar. W przypadku typu danych varchar jest niejawnie konwertowany na typ nvarchar. Lista typów obiektów jest podana w kolumnie Typ danych w temacie sys.objects (język Transact-SQL).

W przypadku indeksów przestrzennych funkcja OBJECT_ID zwraca wartość NULL.

Wartość NULL jest też zwracana w przypadku błędów.

Użytkownik może wyświetlać tylko metadane zabezpieczanych obiektów, które należą do użytkownika lub do których udzielono użytkownikowi pewnych uprawnień. Oznacza to, że generujące metadane wbudowane funkcje, takie jak OBJECT_ID, mogą zwracać wartość NULL, jeśli użytkownik nie ma żadnego uprawnienia do obiektu. Aby uzyskać więcej informacji, zobacz temat Metadane widoczności konfiguracji.

Jeśli parametr funkcji systemowej jest opcjonalny, program przyjmuje, że chodzi o bieżącą bazę danych, komputer hosta, użytkownika serwera lub użytkownika bazy danych. Po funkcjach wbudowanych zawsze muszą być umieszczone nawiasy.

W razie podania nazwy tabeli tymczasowej przed nią musi się znajdować nazwa bazy danych, chyba że bieżącą bazą danych jest tempdb. Na przykład: SELECT OBJECT_ID('tempdb..#mytemptable').

Funkcji systemowych można używać na liście wyboru, w klauzuli WHERE oraz we wszystkich miejscach dopuszczających stosowanie wyrażeń. Aby uzyskać więcej informacji, zobacz tematy Wyrażenia (język Transact-SQL) i W przypadku gdy (języka Transact-SQL).

A.Zwracanie identyfikatora wybranego obiektu

W tym przykładzie zostanie zwrócony identyfikator obiektu używany przez tabelę Production.WorkOrder umieszczoną w bazie danych AdventureWorks.

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


B.Weryfikowanie istnienia obiektu

W tym przykładzie nastąpi sprawdzenie istnienia konkretnej tabeli przez sprawdzenie, czy tabela ma swój identyfikator obiektu. Jeśli tabela istnieje, zostanie usunięta. Jeśli tabela nie istnieje, nie dojdzie do wykonania instrukcji DROP TABLE.

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


C.Używanie funkcji OBJECT_ID do określenia wartości parametru funkcji systemowej

W tym przykładzie za pomocą funkcji sys.dm_db_index_operational_stats zostaną zwrócone informacje o wszystkich indeksach i partycjach tabeli Person.Address znajdującej się w bazie danych AdventureWorks.

Ważna informacja Ważne:

Korzystając z funkcji DB_ID i OBJECT_ID języka Transact-SQL do zwracania parametrów, zawsze należy sprawdzać, czy są zwracane poprawne identyfikatory. Jeśli program nie może odnaleźć bazy danych lub obiektu o podanej nazwie, na przykład wskutek nieistnienia takiego obiektu albo błędnego wpisania nazwy, obie funkcje zwracają wartość NULL. Funkcja sys.dm_db_index_operational_stats interpretuje wartość NULL jako wartość wieloznaczną określającą wszystkie bazy danych lub wszystkie obiekty. Ponieważ takie zachowanie może być sprzeczne z intencjami użytkownika, przykłady w tym rozdziale ilustrują bezpieczny sposób sprawdzania identyfikatorów baz danych i obiektów.

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


Zawartość społeczności

Dodaj
Pokaż:
© 2014 Microsoft