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 nazwę obiektu bazy danych dla obiektów o zakresie schematu. Aby uzyskać listę obiektów o zakresie schematu, zobacz sys.objects (Transact-SQL).
Transact-SQL konwencje składni
Składnia
OBJECT_NAME ( object_id [, database_id ] )
Argumenty (w programowaniu)
object_id
Jest identyfikatorem obiektu, który ma być używany.
object_id jest int i zakłada się, że jest obiektem o zakresie schematu w określonej bazie danych lub w bieżącym kontekście bazy danych.
database_id
Jest identyfikatorem bazy danych, w której ma być wyszukany obiekt. database_id jest int.
Typy zwracane
sysname
Wyjątki
Zwraca wartość NULL w przypadku błędu lub jeśli obiekt wywołujący nie ma uprawnień do wyświetlania obiektu. Jeśli docelowa baza danych ma opcję AUTO_CLOSE ustawioną na WŁ., funkcja otworzy bazę danych.
Użytkownik może wyświetlać tylko metadane zabezpieczanych, które użytkownik jest właścicielem lub którym użytkownik udzielił uprawnień. Oznacza to, że wbudowane funkcje emitujące metadane, takie jak OBJECT_NAME, mogą zwracać wartość NULL, jeśli użytkownik nie ma żadnych uprawnień do obiektu. Aby uzyskać więcej informacji, zobacz Konfiguracja widoczności metadanych.
Uprawnienia
Wymaga uprawnień ANY w obiekcie. Aby określić identyfikator bazy danych, wymagane jest również uprawnienie CONNECT do bazy danych lub konto gościa musi być włączone.
Uwagi
Funkcje systemowe mogą być używane na liście wyboru, w klauzuli WHERE i w dowolnym miejscu, w którym dozwolone jest wyrażenie. Aby uzyskać więcej informacji, zobacz Wyrażenia i GDZIE.
Wartość zwrócona przez tę funkcję systemową używa sortowania bieżącej bazy danych.
Domyślnie aparat bazy danych programu SQL Server zakłada, że object_id znajduje się w kontekście bieżącej bazy danych. Zapytanie odwołujące się do object_id w innej bazie danych zwraca wartości NULL lub niepoprawne wyniki. Na przykład w poniższym zapytaniu kontekst bieżącej bazy danych to AdventureWorks2022. Aparat bazy danych próbuje zwrócić nazwę obiektu dla określonego identyfikatora obiektu w tej bazie danych zamiast bazy danych określonej w klauzuli FROM zapytania. W związku z tym zwracane są nieprawidłowe informacje.
USE AdventureWorks2022;
GO
SELECT DISTINCT OBJECT_NAME(object_id)
FROM master.sys.objects;
GO
Nazwy obiektów można rozpoznać w kontekście innej bazy danych, określając identyfikator bazy danych. Poniższy przykład określa identyfikator bazy danych dla master
bazy danych w OBJECT_SCHEMA_NAME
funkcji i zwraca poprawne wyniki.
USE AdventureWorks2022;
GO
SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id, 1) AS schema_name
FROM master.sys.objects;
GO
Przykłady
Odp. Używanie OBJECT_NAME w klauzuli WHERE
Poniższy przykład zwraca kolumny z sys.objects
widoku wykazu dla obiektu określonego przez OBJECT_NAME
w WHERE
klauzuli instrukcji SELECT
.
USE AdventureWorks2022;
GO
DECLARE @MyID INT;
SET @MyID = (SELECT OBJECT_ID('AdventureWorks2022.Production.Product',
'U'));
SELECT name, object_id, type_desc
FROM sys.objects
WHERE name = OBJECT_NAME(@MyID);
GO
B. Zwracanie nazwy schematu obiektu i nazwy obiektu
Poniższy przykład zwraca nazwę schematu obiektu, nazwę obiektu i tekst SQL dla wszystkich buforowanych planów zapytań, które nie są instrukcjami ad hoc ani przygotowanymi.
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 nazw obiektów trójczęściowych
Poniższy przykład zwraca nazwę bazy danych, schematu i obiektu wraz ze wszystkimi innymi kolumnami w sys.dm_db_index_operational_stats
dynamicznym widoku zarządzania dla wszystkich obiektów we wszystkich bazach 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
Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)
D. Używanie OBJECT_NAME w klauzuli WHERE
Poniższy przykład zwraca kolumny z sys.objects
widoku wykazu dla obiektu określonego przez OBJECT_NAME
w WHERE
klauzuli instrukcji SELECT
. (Numer obiektu (274100017 w poniższym przykładzie) będzie inny. Aby przetestować ten przykład, wyszukaj prawidłowy numer obiektu, wykonując polecenie SELECT name, object_id FROM sys.objects;
w bazie danych).
SELECT name, object_id, type_desc
FROM sys.objects
WHERE name = OBJECT_NAME(274100017);
Zobacz też
Funkcje metadanych (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)