적용 대상:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric의 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입니다. 와일드카드 패턴 일치는 지원되지 않습니다.
[ @table_owner = ] N'table_owner'
카탈로그 정보를 반환하는 데 사용되는 테이블의 테이블 소유자입니다.
@table_owner sysname이며 기본값은 .입니다NULL. 와일드카드 패턴 일치는 지원되지 않습니다. @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 기본값인 char(1)R.
Type
R은 열 또는 열에서 값을 검색하여 지정된 테이블의 모든 행을 고유하게 식별할 수 있는 최적의 열 또는 열 집합을 반환합니다. 열은 이 용도로 설계된 의사 열이거나 테이블에 대한 고유 인덱스의 열 또는 열일 수 있습니다.형식
V은 행의 값이 트랜잭션에 의해 업데이트될 때 데이터 원본에 의해 자동으로 업데이트되는 지정된 테이블의 열(있는 경우)을 반환합니다.
[ @scope = ] '범위'
ROWID의 최소 필수 범위입니다.
@scope 기본값인 char(1)T.
- 범위
C는 ROWID가 해당 행에 배치된 경우에만 유효하다고 지정합니다. - 범위
T는 ROWID가 트랜잭션에 유효하다는 것을 지정합니다.
[ @nullable = ] '무효화'
특수 열이 값을 수락 NULL 할 수 있는지 여부를 지정합니다.
@nullable 기본값인 char(1)U.
-
O은 null 값을 허용하지 않는 특수 열을 지정합니다. -
U는 부분적으로 null 허용 열을 지정합니다.
[ @ODBCVer = ] ODBCVer
사용 중인 ODBC 버전입니다.
@ODBCVer 기본값인 int2. 이 값은 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 정수 및 4의 경우 데이터 형식에 필요한 길이(바이트)2 |
SCALE |
smallint | 데이터 원본의 열 크기 조정입니다.
NULL 는 크기 조정을 적용할 수 없는 데이터 형식에 대해 반환됩니다. |
PSEUDO_COLUMN |
smallint | 열이 의사 열인지 여부를 나타냅니다. SQL Server는 항상 다음을 반환합니다.10 = SQL_PC_UNKNOWN1 = SQL_PC_NOT_PSEUDO2 = SQL_PC_PSEUDO |
설명
sp_special_columns 는 ODBC와 동일합니다 SQLSpecialColumns . 반환되는 결과는 .에 의해 SCOPE정렬됩니다.
사용 권한
스키마에 SELECT 대한 권한이 필요합니다.
예제
다음 예제에서는 테이블의 행을 고유하게 식별하는 열에 HumanResources.Department 대한 정보를 반환합니다.
USE AdventureWorks2022;
GO
EXECUTE sp_special_columns
@table_name = 'Department',
@table_owner = 'HumanResources';