Udostępnij za pośrednictwem


OBJECT_NAME (języka Transact-SQL)

Zwraca nazwę obiektu bazy danych dla obiektów o zakresie schematu.Aby wyświetlić listę obiektów o zakresie schematu Zobacz sys.objects (Transact-SQL).

Topic link iconKonwencje składni języka Transact-SQL

OBJECT_NAME ( object_id [, database_id ] )

Argumenty

  • object_id
    Is the ID of the object to be used.object_id is int and is assumed to be a schema-scoped object in the specified database, or in the current database context.

  • database_id
    Is the ID of the database where the object is to be looked up.database_id is int.

Zwracane typy

sysname

Exceptions

Zwraca wartość NULL na błąd, lub jeśli wywołujący nie ma uprawnień do oglądania obiektu.Jeśli miejsce docelowe baza danych jest ustawiona na ON opcja AUTO_CLOSE, funkcja zostanie otwarte okno bazy danych.

Użytkownik może tylko przeglądać metadane securables należące do tego użytkownika lub w którym użytkownik ma udzielonego uprawnienia.Oznacza to, czy wysyłających metadane wbudowane działa jak OBJECT_NAME może zwracać wartość NULL, jeśli użytkownik nie ma żadnych uprawnień do obiektu.Aby uzyskać więcej informacji zobacz Konfiguracja widoczność metadane i Troubleshooting Metadata Visibility.

Uprawnienia

Wymaga ANY uprawnienia dla obiektu.Aby określić identyfikator bazy danych, CONNECT uprawnień do bazy danych jest również wymagane, lub należy włączyć konto gościa.

Remarks

funkcje systemowe mogą być używane w liście select z klauzula WHERE, i dowolnym wyrażeniu jest dozwolone.Aby uzyskać więcej informacji zobacz Wyrażenia and GDZIE.

Wartość zwracana przez tę funkcja system używa sortowanie bieżącej bazy danych.

Domyślnie SQL Server Database Engine zakłada się, że object_id znajduje się w kontekście bieżącej bazy danych. Kwerenda, która odwołuje się object_id w innej bazie danych zwraca wartość NULL lub niepoprawne wyniki. Na przykład poniższa kwerenda kontekście bieżącej bazy danych jest AdventureWorks. The Database Engine tries to return an object name for the specified object ID in that database instead of the database specified in the FROM klauzula of the query. W związku z tym zwracana jest nieprawidłowe informacje.

USE AdventureWorks;
GO
SELECT DISTINCT OBJECT_NAME(object_id)
FROM master.sys.objects;
GO

Nazwy obiektów w kontekście innej bazy danych można rozwiązać przez określenie identyfikatora bazy danychW następującym przykładzie określono identyfikator bazy danych dla master bazy danych w OBJECT_SCHEMA_NAME Funkcja i zwraca prawidłowych wyniki.

USE AdventureWorks;
GO
SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id, 1) AS schema_name
FROM master.sys.objects;
GO

Przykłady

A.Za pomocą OBJECT_NAME w klauzula WHERE

W poniższym przykładzie zwraca kolumny z sys.objects Widok wykazu dla obiektu określonego przez OBJECT_NAME w WHERE Klauzula SELECT Instrukcja.

B.Zwraca nazwę schematu obiektu i nazwa obiektu

W poniższym przykładzie zwraca nazwę schematu obiektu, nazwę obiektu i tekst wszystkich planów kwerendy buforowana, nie będących ad hoc lub przygotowanych instrukcji SQL.

SELECT DB_NAME(st.dbid) AS database_name, 
    OBJECT_SCHEMA_NAME(st.objectid, st.dbid) AS schema_name,
    OBJECT_NAME(st.objectid, st.dbid) AS object_name, 
    st.text AS query_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
WHERE st.objectid IS NOT NULL;
GO

C.Zwracanie nazwy obiektów do trzech części

W poniższym przykładzie są zwracane bazy danych, schematu i nazwa obiektu wraz z wszystkich kolumn w sys.dm_db_index_operational_stats dynamiczny widok zarządzania dla wszystkich obiektów w przypadku wszystkich baz danych.

SELECT QUOTENAME(DB_NAME(database_id)) 
    + N'.' 
    + QUOTENAME(OBJECT_SCHEMA_NAME(object_id, database_id)) 
    + N'.' 
    + QUOTENAME(OBJECT_NAME(object_id, database_id))
    , * 
FROM sys.dm_db_index_operational_stats(null, null, null, null);
GO