Delen via


OBJECT_SCHEMA_NAME (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric Preview

Retourneert de naam van het databaseschema voor objecten met schemabereik. Zie sys.objects (Transact-SQL) voor een lijst met objecten met schemabereik.

Transact-SQL syntaxis-conventies

Syntaxis

OBJECT_SCHEMA_NAME ( object_id [, database_id ] )  

Arguments

object_id

De id van het object dat moet worden gebruikt. object_id is int en wordt ervan uitgegaan dat het een schemabereikobject is in de opgegeven database of in de huidige databasecontext.

database_id

De id van de database waar het object moet worden opgezoekd. database_id is int.

Retourtypen

sysname

Exceptions

Retourneert NULL bij fout of als een aanroeper niet gemachtigd is om het object weer te geven. Als voor de doeldatabase de optie AUTO_CLOSE is ingesteld op AAN, wordt de database geopend met de functie.

Een gebruiker kan alleen de metagegevens van beveiligbare items bekijken waarvan de gebruiker eigenaar is of waarvoor de gebruiker is gemachtigd. Metagegevens die worden verzonden, ingebouwde functies zoals OBJECT_SCHEMA_NAME null kunnen retourneren als de gebruiker geen machtiging voor het object heeft. Zie De configuratie van zichtbaarheid van metagegevens voor meer informatie.

Permissions

Vereist ANY-machtigingen voor het object. Als u een database-id wilt opgeven, moet u ook verbinding maken met de database of moet het gastaccount zijn ingeschakeld.

Opmerkingen

Systeemfuncties kunnen worden gebruikt in de selectielijst, in de WHERE-component en overal waar een expressie is toegestaan. Zie Expressies en WHERE voor meer informatie.

De resultatenset die door deze systeemfunctie wordt geretourneerd, maakt gebruik van de sortering van de huidige database.

Als database_id niet is opgegeven, gaat de SQL Server Database Engine ervan uit dat deze object_id zich in de context van de huidige database bevindt. Een query die verwijst naar een object_id in een andere database, retourneert NULL- of onjuiste resultaten. In de volgende query is de context van de huidige database bijvoorbeeld AdventureWorks2022. De database-engine probeert een objectschemanaam te retourneren voor de opgegeven object_id in de huidige database in plaats van de database die is opgegeven in de FROM-component van de query. Daarom wordt onjuiste informatie geretourneerd.

SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id)  
FROM master.sys.objects;  

In het volgende voorbeeld wordt de database-id voor de master database in de OBJECT_SCHEMA_NAME functie opgegeven en worden de juiste resultaten geretourneerd.

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

Voorbeelden

Eén. De objectschemanaam en objectnaam retourneren

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

In het volgende voorbeeld wordt de objectschemanaam, objectnaam en SQL-tekst geretourneerd voor alle in de cache opgeslagen queryplannen die geen ad-hoc- of voorbereide instructies zijn.

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_statement  
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  

B. Namen van drie delen van objecten retourneren

Het volgende voorbeeld retourneert de database, het schema en de objectnaam voor alle objecten in de huidige databasecontext.

SELECT QUOTENAME(DB_NAME(db_id()))   
    + N'.'   
    + QUOTENAME(OBJECT_SCHEMA_NAME(object_id, db_id()))   
    + N'.'   
    + QUOTENAME(OBJECT_NAME(object_id, db_id()))  
    , *   
FROM sys.objects;
GO  

In het volgende voorbeeld worden de database, het schema en de objectnaam samen met alle andere kolommen in de sys.dm_db_index_operational_stats dynamische beheerweergave geretourneerd voor alle objecten in alle databases.

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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  

Volgende stappen