메타데이터 - 매개 변수 및 행 집합
적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
이 문서에서는 향상된 OLE DB 날짜 및 시간 기능과 관련하여 다음과 같은 형식 및 형식 멤버에 대한 정보를 제공합니다.
DBBINDING 구조
ICommandWithParameters::GetParameterInfo
ICommandWithParameters::SetParameterInfo
IColumnsRowset::GetColumnsRowset
IColumnsInfo::GetColumnInfo
ICommandWithParameters::GetParameterInfo
다음은 prgParamInfo를 통해 DBPARAMINFO 구조에 반환되는 정보입니다.
매개 변수 유형 | wType | ulParamSize | bPrecision | bScale | dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
date | DBTYPE_DBDATE | 6 | 10 | 0 | 지우기 |
time | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | 설정 |
smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | 지우기 |
Datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | 지우기 |
datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | 설정 |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | 설정 |
값 범위가 연속되지 않을 수도 있습니다. 이러한 경우는 소수 부분 자릿수가 0보다 커서 소수점을 추가했을 때 발생합니다.
DBPARAMFLAGS_SS_ISVARIABLESCALE SQL Server 2008(10.0.x) 이상 버전을 실행하는 서버에 연결된 경우에만 유효합니다. 하위 수준 서버에 연결된 경우에는 DBPARAMFLAGS_SS_ISVARIABLESCALE이 설정되지 않습니다.
ICommandWithParameters::SetParameterInfo 및 암시적 매개 변수 유형
DBPARAMBINDINFO 구조에 제공된 정보는 다음을 준수해야 합니다.
pwszDataSourceType (공급자별로 다름) |
pwszDataSourceType (OLE DB 일반) |
ulParamSize | bScale |
---|---|---|---|
DBTYPE_DATE | 6 | 무시됨 | |
date | DBTYPE_DBDATE | 6 | 무시됨 |
DBTYPE_DBTIME | 10 | 무시됨 | |
time | DBTYPE_DBTIME2 | 10 | 0..7 |
smalldatetime | 16 | 무시됨 | |
Datetime | 16 | 무시됨 | |
datetime2 또는 DBTYPE_DBTIMESTAMP | DBTYPE_DBTIMESTAMP | 16 | 0..7 |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 0..7 |
bPrecision 매개 변수는 무시됩니다.
"DBPARAMFLAGS_SS_ISVARIABLESCALE"은 데이터를 서버로 보낼 때 무시됩니다. 애플리케이션은 공급자별 유형 이름 "datetime" 및 "smalldatetime"을 사용하여 레거시 TDS(Tabular Data Stream) 유형의 사용을 강제할 수 있습니다. SQL Server 2008(10.0.x) 이상 버전을 실행하는 서버에 연결된 경우 "datetime2" 형식이 사용되며, 유형 이름이 "datetime2" 또는 "DBTYPE_DBTIMESTAMP"이면 필요에 따라 암시적 서버 변환이 발생합니다. 공급자 관련 형식 이름 "datetime" 또는 "smalldatetime"이 사용되는 경우 bScale은 무시됩니다. 그렇지 않으면 애플리케이션에서 bScale이 올바르게 설정되었는지 확인해야 합니다. "DBTYPE_DBTIMESTAMP"를 사용하는 SQL Server 2005(9.x)의 MDAC와 OLE DB Driver for SQL Server에서 업그레이드된 애플리케이션은 bScale을 올바르게 설정하지 않을 경우 실패합니다. SQL Server 2008(10.0.x) 이전 버전의 서버 인스턴스에 연결된 경우 "DBTYPE_DBTIMESTAMP"가 있는 bScale 값이 0 또는 3이 아니면 오류이며 E_FAIL이 반환됩니다.
ICommandWithParameters::SetParameterInfo가 호출되지 않으면 공급자는 IAccessor::CreateAccessor에 다음과 같이 지정된 대로 바인딩 형식의 서버 형식을 의미합니다.
바인딩 유형 | pwszDataSourceType (공급자별로 다름) |
---|---|
DBTYPE_DATE | datetime2(0) |
DBTYPE_DBDATE | date |
DBTYPE_DBTIME | time(0) |
DBTYPE_DBTIME2 | time(7) |
DBTYPE_DBTIMESTAMP | datetime2(7) |
DBTYPE_DBTIMESTAMPOFFSET | datetimeoffset(7) |
IColumnsRowset::GetColumnsRowset
IColumnsRowset::GetColumnsRowset은 다음 열을 반환합니다.
열 유형 | DBCOLUMN_TYPE | DBCOLUM_COLUMNSIZE | DBCOLUMN_PRECISION | DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION | DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
date | DBTYPE_DBDATE | 6 | 10 | 0 | 지우기 |
time | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | 설정 |
smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | 지우기 |
Datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | 지우기 |
datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | 설정 |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | 설정 |
DBCOLUMN_FLAGS에서 날짜/시간 유형에 대해 DBCOLUMNFLAGS_ISFIXEDLENGTH는 항상 true이지만 다음과 같은 플래그는 항상 false입니다.
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER
DBCOLUMNFLAGS_MAYDEFER
나머지 플래그(DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE 및 DBCOLUMNFLAGS_WRITEUNKNOWN)는 열이 정의된 방법 및 실제 쿼리에 따라 설정될 수 있습니다.
새 플래그 DBCOLUMNFLAGS_SS_ISVARIABLESCALE는 애플리케이션에서 DBCOLUMN_TYPE이 DBTYPE_DBTIMESTAMP인 열의 서버 유형을 확인할 수 있도록 DBCOLUMN_FLAGS에 제공됩니다. 서버 유형을 확인하려면 DBCOLUMN_SCALE 또는 DBCOLUMN_DATETIMEPRECISION도 사용해야 합니다.
DBCOLUMNFLAGS_SS_ISVARIABLESCALE SQL Server 2008(10.0.x) 이상 버전을 실행하는 서버에 연결된 경우에만 유효합니다. 하위 수준 서버에 연결된 경우에는 DBCOLUMNFLAGS_SS_ISVARIABLESCALE이 정의되지 않습니다.
IColumnsInfo::GetColumnInfo
DBCOLUMNINFO 구조는 다음 정보를 반환합니다.
매개 변수 유형 | wType | ulColumnSize | bPrecision | bScale | dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
date | DBTYPE_DBDATE | 6 | 10 | 0 | 지우기 |
time(1..7) | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | 설정 |
smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | 지우기 |
Datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | 지우기 |
datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | 설정 |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | 설정 |
dwFlags에서 날짜/시간 유형에 대해 DBCOLUMNFLAGS_ISFIXEDLENGTH는 항상 true이지만 다음과 같은 플래그는 항상 false입니다.
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER, MAYDEFER
나머지 플래그(DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE 및 DBCOLUMNFLAGS_WRITEUNKNOWN)가 설정될 수 있습니다.
새 플래그 DBCOLUMNFLAGS_SS_ISVARIABLESCALE은 애플리케이션에서 wType이 DBTYPE_DBTIMESTAMP인 열의 서버 유형을 확인할 수 있도록 dwFlags에 제공됩니다. 서버 유형을 확인하려면 bScale도 사용해야 합니다.