OBJECT_SCHEMA_NAME(Transact-SQL)

스키마 범위 개체에 대한 데이터베이스 개체 이름을 반환합니다. 스키마 범위 개체의 목록을 보려면 sys.objects(Transact-SQL)를 참조하십시오.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

OBJECT_SCHEMA_NAME ( object_id [, database_id ] )

인수

  • object_id
    사용할 개체의 ID입니다. object_id는 int이며 지정한 데이터베이스 또는 현재 데이터베이스 컨텍스트에서 스키마 범위 개체로 간주됩니다.

  • database_id
    개체를 조회하려는 데이터베이스의 ID입니다. database_id는 int입니다.

반환 유형

sysname

예외

오류가 발생하거나 호출자가 개체를 볼 수 있는 권한을 갖고 있지 않으면 NULL을 반환합니다. 대상 데이터베이스에서 AUTO_CLOSE 옵션을 ON으로 설정하면 함수가 데이터베이스를 엽니다.

사용자는 소유하고 있거나 사용 권한을 부여 받은 보안 개체의 메타데이터만 볼 수 있습니다. 즉, 사용자에게 개체에 대한 사용 권한이 없으면 OBJECT_SCHEMA_NAME과 같은 메타데이터 내보내기 기본 제공 함수가 NULL을 반환할 수 있습니다. 자세한 내용은 메타데이터 표시 유형 구성메타데이터 표시 문제 해결을 참조하십시오.

사용 권한

개체에 대한 ANY 권한이 필요합니다. 데이터베이스 ID를 지정하려면 데이터베이스에 대해 CONNECT 권한도 필요합니다. 그렇지 않으면 게스트 계정을 설정해야 합니다.

주의

시스템 함수는 SELECT 목록, WHERE 절 및 식이 허용되는 모든 곳에서 사용할 수 있습니다. 자세한 내용은 WHERE를 참조하십시오.

이 시스템 함수에서 반환하는 결과 집합에서는 현재 데이터베이스의 데이터 정렬을 사용합니다.

database_id가 지정되지 않은 경우 SQL Server 데이터베이스 엔진은 object_id가 현재 데이터베이스 컨텍스트에 있다고 간주합니다. 다른 데이터베이스의 object_id를 참조하는 쿼리는 NULL 또는 잘못된 결과를 반환합니다. 예를 들어 다음 쿼리에서 현재 데이터베이스 컨텍스트는 AdventureWorks 데이터베이스입니다. 데이터베이스 엔진은 쿼리의 FROM 절에 지정된 데이터베이스 대신 이 데이터베이스의 지정된 개체 ID에 대한 개체 스키마 이름을 반환하려고 합니다. 따라서 잘못된 정보가 반환됩니다.

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

다음 예에서는 OBJECT_SCHEMA_NAME 함수에서 master 데이터베이스에 대한 데이터베이스 ID를 지정하고 올바른 결과를 반환합니다.

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

1. 개체 스키마 이름 및 개체 이름 반환

다음 예에서는 임시 문이나 준비된 문이 아닌 모든 캐시된 쿼리 계획에 대한 개체 스키마 이름, 개체 이름 및 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_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

2. 세 부분으로 된 개체 이름 반환

다음 예에서는 모든 데이터베이스의 모든 개체에 대해 sys.dm_db_index_operational_stats 동적 관리 뷰의 모든 다른 열과 함께 데이터베이스, 스키마 및 개체 이름을 반환합니다.

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