Metadane — parametr i zestaw wierszy
Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)
Ten artykuł zawiera informacje o następujących typach i elementach członkowskich typu związanych z ulepszeniami daty i godziny OLE DB.
DBBINDING, struktura
ICommandWithParameters::GetParameterInfo
ICommandWithParameters::SetParameterInfo
IColumnsRowset::GetColumnsRowset
IColumnsInfo::GetColumnInfo
ICommandWithParameters::GetParameterInfo
Następujące informacje są zwracane w strukturze DBPARAMINFO za pośrednictwem prgParamInfo:
Typ parametru | wType | ulParamSize | |
bScale | DBPARAMFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
data | DBTYPE_DBDATE | 6 | 10 | 0 | Jasny |
Godzina | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Zbiór |
smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Jasny |
data/godzina | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Jasny |
data/godzina2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Zbiór |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Zbiór |
Zwróć uwagę, że w niektórych przypadkach zakresy wartości nie są ciągłe. Jest to spowodowane dodaniu punktu dziesiętnego, gdy precyzja ułamkowa jest większa niż zero.
DBPARAMFLAGS_SS_ISVARIABLESCALE jest prawidłowy tylko w przypadku połączenia z serwerem z uruchomionym programem SQL Server 2008 (10.0.x) i nowszymi wersjami. DBPARAMFLAGS_SS_ISVARIABLESCALE nigdy nie jest ustawiana po nawiązaniu połączenia z serwerami na poziomie podrzędnym.
ICommandWithParameters::SetParameterInfo i Dorozumiane typy parametrów
Informacje podane w strukturze DBPARAMBINDINFO muszą być zgodne z następującymi elementami:
pwszDataSourceType (specyficzny dla dostawcy) |
pwszDataSourceType (Ogólna baza danych OLE DB) |
ulParamSize | bScale |
---|---|---|---|
DBTYPE_DATE | 6 | Ignorowane | |
data | DBTYPE_DBDATE | 6 | Ignorowane |
DBTYPE_DBTIME | 10 | Ignorowane | |
Godzina | DBTYPE_DBTIME2 | 10 | 0..7 |
smalldatetime | 16 | Ignorowane | |
data/godzina | 16 | Ignorowane | |
data/godzina2 lub DBTYPE_DBTIMESTAMP | DBTYPE_DBTIMESTAMP | 16 | 0..7 |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 0..7 |
Parametr bPrecision jest ignorowany.
"DBPARAMFLAGS_SS_ISVARIABLESCALE" jest ignorowany podczas wysyłania danych do serwera. Aplikacje mogą wymusić użycie starszych typów strumienia danych tabelarycznych (TDS) przy użyciu nazw typów specyficznych dla dostawcy "data/godzina" i "smalldatetime". Po nawiązaniu połączenia z serwerami z programem SQL Server 2008 (10.0.x) i nowszymi wersjami "data/godzina2" zostanie użyty format , a w razie potrzeby zostanie użyta niejawna konwersja serwera, gdy nazwa typu to "datetime2" lub "DBTYPE_DBTIMESTAMP". bScale jest ignorowana, jeśli są używane nazwy typów specyficznych dla dostawcy "data/godzina" lub "smalldatetime". W przeciwnym razie aplikacje muszą upewnić się, że bScale jest poprawnie ustawiona. Aplikacje uaktualnione ze sterownika MDAC i OLE DB dla programu SQL Server z programu SQL Server 2005 (9.x), które używają polecenia "DBTYPE_DBTIMESTAMP", zakończy się niepowodzeniem, jeśli nie ustawią poprawnie skalowania bScale. W przypadku połączenia z wystąpieniami serwera starszych niż SQL Server 2008 (10.0.x) zostanie zwrócona wartość bScale inna niż 0 lub 3 z wartością "DBTYPE_DBTIMESTAMP" i zostanie zwrócona E_FAIL.
Jeśli parametr ICommandWithParameters::SetParameterInfo nie jest wywoływany, dostawca wskazuje typ serwera z typu powiązania określonego w funkcji IAccessor::CreateAccessor w następujący sposób:
Typ powiązania |
pwszDataSourceType (specyficzny dla dostawcy) |
---|---|
DBTYPE_DATE | datetime2(0) |
DBTYPE_DBDATE | data |
DBTYPE_DBTIME | time(0) |
DBTYPE_DBTIME2 | time(7) |
DBTYPE_DBTIMESTAMP | datetime2(7) |
DBTYPE_DBTIMESTAMPOFFSET | datetimeoffset(7) |
IColumnsRowset::GetColumnsRowset
IColumnsRowset::GetColumnsRowset zwraca następujące kolumny:
Typ kolumny | DBCOLUMN_TYPE | DBCOLUMN_COLUMNSIZE | DBCOLUMN_PRECISION | DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION | DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
data | DBTYPE_DBDATE | 6 | 10 | 0 | Jasny |
Godzina | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Zbiór |
smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Jasny |
data/godzina | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Jasny |
data/godzina2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Zbiór |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Zbiór |
W DBCOLUMN_FLAGS DBCOLUMNFLAGS_ISFIXEDLENGTH jest zawsze prawdziwe dla typów daty/godziny, a następujące flagi są zawsze fałszywe:
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER
DBCOLUMNFLAGS_MAYDEFER
Pozostałe flagi (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE i DBCOLUMNFLAGS_WRITEUNKNOWN) można ustawić w zależności od sposobu definiowania kolumny i rzeczywistego zapytania.
Nowa flaga DBCOLUMNFLAGS_SS_ISVARIABLESCALE jest udostępniana w DBCOLUMN_FLAGS, aby umożliwić aplikacji określenie typu serwera kolumn, w których DBCOLUMN_TYPE jest DBTYPE_DBTIMESTAMP. DBCOLUMN_SCALE lub DBCOLUMN_DATETIMEPRECISION należy również użyć do identyfikowania typu serwera.
DBCOLUMNFLAGS_SS_ISVARIABLESCALE jest prawidłowy tylko w przypadku połączenia z serwerem z programem SQL Server 2008 (10.0.x) i nowszymi wersjami. DBCOLUMNFLAGS_SS_ISVARIABLESCALE jest niezdefiniowany po nawiązaniu połączenia z serwerami na poziomie podrzędnym.
IColumnsInfo::GetColumnInfo
Struktura DBCOLUMNINFO zwraca następujące informacje:
Typ parametru | wType | ulColumnSize | |
bScale | DBPARAMFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
data | DBTYPE_DBDATE | 6 | 10 | 0 | Jasny |
time(1..7) | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Zbiór |
smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Jasny |
data/godzina | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Jasny |
data/godzina2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Zbiór |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Zbiór |
W dwFlagsDBCOLUMNFLAGS_ISFIXEDLENGTH jest zawsze prawdziwe dla typów daty/godziny, a następujące flagi są zawsze fałszywe:
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER, MAYDEFER
Pozostałe flagi (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE i DBCOLUMNFLAGS_WRITEUNKNOWN) można ustawić.
W dwFlags jest dostępna nowa DBCOLUMNFLAGS_SS_ISVARIABLESCALE flaga umożliwiająca aplikacji określenie typu kolumn serwera, w których wType jest DBTYPE_DBTIMESTAMP. bScale należy również użyć do identyfikowania typu serwera.
Zobacz też
obsługa typów danych dla ulepszeń daty i godziny OLE DB