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

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

SQL Server 데이터 형식

OLE DB 데이터 형식

bigint

DBTYPE_I8

binary

DBTYPE_BYTES

bit

DBTYPE_BOOL

char

DBTYPE_STR

datetime

DBTYPE_DBTIMESTAMP

datetime2

DBTYPE_DBTIME2

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

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

sql_variant 개체는 text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, timestamp 및 Microsoft .NET Framework CLR(공용 언어 런타임) 사용자 정의 형식을 제외한 모든 SQL Server 데이터 형식의 데이터를 포함할 수 있습니다. 또한 sql_variant 데이터 인스턴스는 sql_variant를 기본 데이터 형식으로 사용할 수 없습니다. 예를 들어 열의 일부 행에는 smallint 값이 포함되고, 다른 행에는 float 값이 포함되고, 나머지 행에는 char/nchar 값이 포함될 수 있습니다.

[!참고]

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

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

DBTYPE_SQLVARIANT 데이터 형식

sql_variant 데이터 형식을 지원하기 위해 SQL Server Native Client OLE DB 공급자는 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: 읽기/쓰기

기본값: VARIANT_FALSE

설명: 데이터가 DBTYPE_VARIANT 또는 DBTYPE_SQLVARIANT로 인출되는지를 결정합니다.

VARIANT_TRUE: 열 유형이 DBTYPE_SQLVARIANT로 반환되고, 이 경우 버퍼에 SSVARIANT 구조가 포함됩니다.

VARIANT_FALSE: 열 유형이 DBTYPE_VARIANT로 반환되고, 이 경우 버퍼에 VARIANT 구조가 포함됩니다.

참고 항목

개념

데이터 형식(OLE DB)