행 집합 및 매개 변수의 데이터 형식 매핑

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

OLE DB 드라이버 다운로드

행 집합 및 매개 변수 값으로 OLE DB Driver for SQL Server는 IColumnsInfo::GetColumnInfoICommandWithParameters::GetParameterInfo 함수에 보고된 다음 OLE DB 정의 데이터 형식을 사용하여 SQL Server 데이터를 나타냅니다.

SQL Server 데이터 형식 OLE DB 데이터 형식
bigint DBTYPE_I8
binary DBTYPE_BYTES
bit DBTYPE_BOOL
char DBTYPE_STR
날짜/시간 DBTYPE_DBTIMESTAMP
datetime2 DBTYPE_DBTIMESTAMP
decimal DBTYPE_NUMERIC
float DBTYPE_R8
image DBTYPE_BYTES
int DBTYPE_I4
money DBTYPE_CY
nchar DBTYPE_WSTR
ntext DBTYPE_WSTR
numeric DBTYPE_NUMERIC
nvarchar DBTYPE_WSTR
real DBTYPE_R4
smalldatetime DBTYPE_DBTIMESTAMP
smallint DBTYPE_I2
smallmoney DBTYPE_CY
sql_variant DBTYPE_VARIANT, DBTYPE_SQLVARIANT
sysname DBTYPE_WSTR
text DBTYPE_STR
timestamp DBTYPE_BYTES
tinyint DBTYPE_UI1
UDT DBTYPE_UDT
uniqueidentifier DBTYPE_GUID
varbinary DBTYPE_BYTES
varchar DBTYPE_STR
XML DBTYPE_XML

OLE DB Driver for SQL Server는 그림과 같이 소비자가 요청한 데이터 변환을 지원합니다.

sql_variant 개체는 텍스트, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, 타임스탬프 및 Microsoft .NET Framework CLR(공용 언어 런타임) 사용자 정의 형식을 제외한 모든 SQL Server 데이터 형식의 데이터를 저장할 수 있습니다. sql_variant 데이터 인스턴스에는 기본 데이터 형식으로 sql_variant 수 없습니다. 예를 들어 열에는 일부 행의 작은 값, 다른 행의 부동 소수 자릿수 값 및 re기본der에 char/nchar 값이 포함될 있습니다.

참고 항목

sql_variant 데이터 형식은 Visual Basic의 Variant 데이터 형식과 OLEDB의 DBTYPE_SQLVARIANT DBTYPE_VARIANT 유사합니다.

sql_variant 데이터가 DBTYPE_VARIANT 페치되면 버퍼의 VARIANT 구조에 배치됩니다. 그러나 VARIANT 구조의 하위 형식은 sql_variant 데이터 형식에 정의된 하위 형식에 매핑되지 않을 수 있습니다. 모든 하위 형식이 일치하려면 sql_variant 데이터를 DBTYPE_SQLVARIANT 페치해야 합니다.

DBTYPE_SQLVARIANT 데이터 형식

sql_variant 데이터 형식을 지원하기 위해 OLE DB Driver for SQL Server는 DBTYPE_SQLVARIANT 공급자별 데이터 형식을 노출합니다. sql_variant 데이터를 DBTYPE_SQLVARIANT 가져오면 공급자별 SSVARIANT 구조에 저장됩니다. SSVARIANT 구조에는 sql_variant 데이터 형식의 하위 형식과 일치하는 모든 하위 형식이 포함됩니다.

또한 세션 속성 SSPROP_ALLOWNATIVEVARIANT를 TRUE로 설정해야 합니다.

공급자별 속성 SSPROP_ALLOWNATIVEVARIANT

데이터를 가져올 때 열 또는 매개 변수에 대해 반환해야 하는 데이터 형식의 종류를 명시적으로 지정할 수 있습니다. IColumnsInfo를 사용하여 열 정보를 가져오고 이 정보를 기반으로 바인딩을 수행할 수도 있습니다. IColumnsInfo를 사용하여 바인딩 목적으로 열 정보를 가져오는 경우 SSPROP_ALLOWNATIVEVARIANT 세션 속성이 FALSE(기본값)이면 sql_variant 열에 대해 DBTYPE_VARIANT 반환됩니다. SSPROP_ALLOWNATIVEVARIANT 속성이 FALSE이면 DBTYPE_SQLVARIANT 지원되지 않습니다. SSPROP_ALLOWNATIVEVARIANT 속성이 TRUE로 설정된 경우 열 형식은 DBTYPE_SQLVARIANT 반환되며, 이 경우 버퍼는 SSVARIANT 구조를 유지합니다. sql_variant 데이터를 DBTYPE_SQLVARIANT 가져올 때 세션 속성 SSPROP_ALLOWNATIVEVARIANT TRUE로 설정해야 합니다.

SSPROP_ALLOWNATIVEVARIANT 속성은 공급자별 DBPROPSET_SQLSERVERSESSION 속성 집합의 일부이며 세션 속성입니다.

DBTYPE_VARIANT 다른 모든 OLE DB 공급자에 적용됩니다.

SSPROP_ALLOWNATIVEVARIANT

SSPROP_ALLOWNATIVEVARIANT는 세션 속성이며 DBPROPSET_SQLSERVERSESSION 속성 집합의 일부입니다.

속성 설명
SSPROP_ALLOWNATIVEVARIANT 유형: VT_BOOL

R/W: 읽기/쓰기

Default: VARIANT_FALSE

설명: 가져온 데이터가 DBTYPE_VARIANT 또는 DBTYPE_SQLVARIANT 여부를 확인합니다.

VARIANT_TRUE: 열 형식은 DBTYPE_SQLVARIANT 반환되며 이 경우 버퍼는 SSVARIANT 구조를 보유합니다.

VARIANT_FALSE: 열 형식은 DBTYPE_VARIANT 반환되고 버퍼에는 VARIANT 구조가 있습니다.

참고 항목

데이터 형식(OLE DB)