Udostępnij za pośrednictwem


Metadane — parametr i zestaw wierszy

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

pobierz sterownik OLE DB

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 bPrecision bScale dwFlags

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 bPrecision bScale dwFlags

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