sp_special_columns(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

테이블의 행을 고유하게 식별하는 최적의 열 집합을 반환합니다. 또한 행의 값이 트랜잭션에 의해 업데이트되면 자동으로 업데이트되는 열을 반환합니다.

Transact-SQL 구문 표기 규칙

구문

sp_special_columns
    [ @table_name = ] N'table_name'
    [ , [ @table_owner = ] N'table_owner' ]
    [ , [ @table_qualifier = ] N'table_qualifier' ]
    [ , [ @col_type = ] 'col_type' ]
    [ , [ @scope = ] 'scope' ]
    [ , [ @nullable = ] 'nullable' ]
    [ , [ @ODBCVer = ] ODBCVer ]
[ ; ]

인수

[ @table_name = ] N'table_name'

카탈로그 정보를 반환하는 데 사용되는 테이블의 이름입니다. @table_name 기본값이 없는 sysname입니다. Wild카드 패턴 일치는 지원되지 않습니다.

[ @table_owner = ] N'table_owner'

카탈로그 정보를 반환하는 데 사용되는 테이블의 테이블 소유자입니다. @table_owner sysname이며 기본값은 .입니다NULL. Wild카드 패턴 일치는 지원되지 않습니다. @table_owner 지정되지 않은 경우 기본 DBMS(데이터베이스 관리 시스템)의 기본 테이블 표시 유형 규칙이 적용됩니다.

SQL Server에서 현재 사용자가 지정된 이름의 테이블을 소유하는 경우 해당 테이블의 열이 반환됩니다. @table_owner 지정되지 않고 현재 사용자가 지정된 @table_name 테이블을 소유하지 않는 경우 이 절차에서는 데이터베이스 소유자가 소유한 지정된 @table_name 테이블을 찾습니다. 테이블이 있으면 해당 열이 반환됩니다.

[ @table_qualifier = ] N'table_qualifier'

테이블 한정자의 이름입니다. @table_qualifier sysname이며 기본값은 .입니다NULL. 다양한 DBMS 제품은 테이블(<qualifier>.<owner>.<name>)에 대해 세 부분으로 구성된 명명을 지원합니다. SQL Server에서 이 열은 데이터베이스 이름을 나타냅니다. 일부 제품에서는 테이블의 데이터베이스 환경 서버 이름을 나타냅니다.

[ @col_type = ] 'col_type'

열 형식입니다. @col_type 기본값R인 char(1)입니다.

  • Type R 은 열 또는 열에서 값을 검색하여 지정된 테이블의 모든 행을 고유하게 식별할 수 있는 최적의 열 또는 열 집합을 반환합니다. 열은 이 용도로 설계된 의사 열이거나 테이블에 대한 고유 인덱스의 열 또는 열일 수 있습니다.

  • 형식 V 은 행의 값이 트랜잭션에 의해 업데이트될 때 데이터 원본에 의해 자동으로 업데이트되는 지정된 테이블의 열(있는 경우)을 반환합니다.

[ @scope = ] 'scope'

ROWID의 최소 필수 범위입니다. @scope 기본값T인 char(1)입니다.

  • 범위 C 는 ROWID가 해당 행에 배치된 경우에만 유효하다고 지정합니다.
  • 범위 T 는 ROWID가 트랜잭션에 유효하다는 것을 지정합니다.

[ @nullable = ] 'nullable'

특수 열이 값을 수락 NULL 할 수 있는지 여부를 지정합니다. @nullable 기본값U인 char(1)입니다.

  • O 은 null 값을 허용하지 않는 특수 열을 지정합니다.
  • U 는 부분적으로 null 허용 열을 지정합니다.

[ @ODBCVer = ] ODBCVer

사용 중인 ODBC 버전입니다. @ODBCVer 기본값2인 int입니다. 이 값은 ODBC 버전 2.0을 나타냅니다. ODBC 버전 2.0과 ODBC 버전 3.0의 차이점에 대한 자세한 내용은 ODBC 버전 3.0에 대한 ODBC SQLSpecialColumns 사양을 참조하세요.

반환 코드 값

없음

결과 집합

열 이름 데이터 형식 설명
SCOPE smallint 행 ID의 실제 범위입니다. 0, 1 또는 2일 수 있습니다. SQL Server는 항상 .0 이 필드는 항상 값을 반환합니다.

0 = SQL_SCOPE_CURROW. 행 ID는 해당 행에 배치되는 동안에만 유효합니다. 행이 다른 트랜잭션에 의해 업데이트되거나 삭제된 경우 행 ID를 사용하여 나중에 다시 선택하면 행이 반환되지 않을 수 있습니다.
1 = SQL_SCOPE_TRANSACTION. 행 ID는 현재 트랜잭션 기간 동안 유효합니다.
2 = SQL_SCOPE_SESSION. 행 ID는 세션 기간 동안(트랜잭션 경계를 넘어) 유효하도록 보장됩니다.
COLUMN_NAME sysname 반환된 @table_name 각 열의 열 이름입니다. 이 필드는 항상 값을 반환합니다.
DATA_TYPE smallint ODBC SQL 데이터 형식입니다.
TYPE_NAME sysname 데이터 원본 종속 데이터 형식 이름; 예를 들어 char, varchar, money 또는 text입니다.
PRECISION int 데이터 원본의 행 전체 자릿수입니다. 이 필드는 항상 값을 반환합니다.
LENGTH int 데이터 원본의 이진 형식(예: char(10), 10 정수 및 2smallint의 경우 데이터 형식에 필요한 길이(바이트)4입니다.
SCALE smallint 데이터 원본의 열 크기 조정입니다. NULL 는 크기 조정을 적용할 수 없는 데이터 형식에 대해 반환됩니다.
PSEUDO_COLUMN smallint 열이 의사 열인지 여부를 나타냅니다. SQL Server는 항상 다음을 반환합니다.1

0 = SQL_PC_UNKNOWN
1 = SQL_PC_NOT_PSEUDO
2 = SQL_PC_PSEUDO

설명

sp_special_columns 는 ODBC와 동일합니다 SQLSpecialColumns . 반환되는 결과는 .에 의해 SCOPE정렬됩니다.

사용 권한

스키마에 SELECT 대한 권한이 필요합니다.

예제

다음 예제에서는 테이블의 행을 고유하게 식별하는 열에 HumanResources.Department 대한 정보를 반환합니다.

USE AdventureWorks2022;
GO

EXEC sp_special_columns @table_name = 'Department',
    @table_owner = 'HumanResources';