Udostępnij za pośrednictwem


Konwersje wykonywane z klienta do serwera

W tym temacie opisano data /czas zestawami między aplikacji klient napisanych z SQL Server macierzystego klient OLE DB i SQL Server 2008 (lub nowsze).

Konwersje

W tym temacie opisano konwersji na klient.Jeśli klient określa dokładność ułamków sekund dla parametru, która różni się od zdefiniowanego na serwerze, konwersji klienta może spowodować błąd w przypadkach, gdy serwer pozwoliłoby operacja powiodła się.W szczególności klient traktuje wszystkie obcinania ułamków sekund jako błąd, należy SQL Server wartości do najbliższego drugiego cały czas zaokrągla.

Jeśli ICommandWithParameters::SetParameterInfo nie jest wywoływana, DBTYPE_DBTIMESTAMP powiązania są konwertowane, tak jakby były datetime2.

->

Z

DBDATE (Data)

DBTIME (czas)

DBTIME2 (czas)

Odcisk CZASOWY (smalldatetime)

Odcisk CZASOWY (datetime)

Odcisk CZASOWY (datetime2)

DBTIMESTAMPOFFSET (datetimeoffset)

STR

WSTR

ELEMENT SQLVARIANT

(sql_variant)

DATA

1,2

1,3,4

4,12

1,12

1,12

1,12

1,5, 12

1,12

1,12

1,12

datetime2(0)

DBDATE

1

-

-

1,6

1,6

1,6

1,5, 6

1,10

1,10

1

data

DBTIME

-

1

1

1,7

1,7

1,7

1,5, 7

1,10

1,10

1

Time(0)

DBTIME2

-

1,3

1

1,7,10,14

1,7,10,15

1,7,10

1,5,7,10

1,10,11

1,10,11

1

Time(7)

ODCISK CZASOWY

1,2

1,3,4

1,4,10

1,10,14

1,10,15

1,10

1,5,10

1,10,11

1,10,11

1,10

datetime2(7)

DBTIMESTAMPOFFSET

1,2,8

1,3,4,8

1,4,8,10

1,8,10,14

1,8,10,15

1,8,10

1,10

1,10,11

1,10,11

1,10

datetimeoffset(7)

FILETIME

1,2

1,3,4

1,4,13

1,13

1,13

1,13

1,5,13

1,13

1,10

1,13

datetime2(3)

BAJTÓW

-

-

-

-

-

-

-

Brak

Brak

Brak

WARIANT

1

1

1

1,10

1,10

1,10

1,10

Brak

Brak

1,10

SSVARIANT

1,16

1,16

1,16

1,10,16

1,10,16

1,10,16

1,10,16

Brak

Brak

1,16

BSTR

1,9

1,9

1,9,10

1,9,10

1,9,10

1,9,10

1,9,10

Brak

Brak

Brak

STR

1,9

1,9

1,9,10

1,9,10

1,9,10

1,9,10

1,9,10

Brak

Brak

Brak

WSTR

1,9

1,9

1,9,10

1,9,10

1,9,10

1,9,10

1,9,10

Brak

Brak

Brak

Klucz do symboli

Symbol

Znaczenie

-

Konwersja nie jest obsługiwane.Jeśli powiązanie jest sprawdzana podczas IAccessor::CreateAccessor jest wywoływana, DBBINDSTATUS_UPSUPPORTEDCONVERSION jest zwracany w rgStatus.Sprawdzenie metoda dostępua jest odroczona, DBSTATUS_E_BADACCESSOR jest zestaw.

Brak

Nie dotyczy.

1

Jeżeli dostarczone dane nie jest prawidłowy, DBSTATUS_E_CANTCONVERTVALUE jest zestaw.Jest sprawdzana poprawność danych wejściowych, przed zastosowaniem konwersje, nawet gdy składnik zostanie zignorowany przez kolejne konwersji musi nadal być ważne dla konwersja powiodła się.

2

Pola czasu są ignorowane.

3

Ułamków sekund musi mieć wartość zero lub zestaw DBSTATUS_E_DATAOVERFLOW.

4

Składnik data jest ignorowana.

5

Strefa czasowa jest ustawiona zestaw timezone klient.

6

Czas jest zestaw do zera.

7

Data jest zestaw do bieżącej daty.

8

Czas jest konwertowany na UTC.Jeżeli błąd wystąpi podczas tej konwersji, DBSTATUS_E_CANTCONVERTVALUE jest zestaw.

9

Ciąg jest analizowana jako literał ISO i konwertowana na typ miejsce docelowe.Jeśli to się nie powiedzie, ciąg jest analizowany jako literałem data OLE (także czas składników) i konwertowane z data OLE (DBTYPE_DATE) na typ miejsce docelowe.

Jeśli typ miejsce docelowe jest DBczasSTEMPEL, smalldatetime, datetime, lub datetime2, ciąg musi być zgodna ze składni dla data, czas, lub datetime2 literały, lub składni rozpoznawane przez OLE.Jeśli ciąg jest literałem, data wszystkich czas składniki są ustawiane na zero.Jeśli ciąg jest czas literału, data jest ustawiona data bieżąca.

Dla wszystkich pozostałych typ docelowys, ciąg musi być zgodna ze składni literały typ docelowy.

10

Jeśli nastąpi obcięcie ułamków sekund z utraty danych, jest DBSTATUS_E_DATAOVERFLOW zestaw.Do konwersji ciągów sprawdzania przepełnienia jest możliwe tylko po ciąg jest zgodny z ISO składni.Jeśli ciąg jest literałem data OLE, ułamków sekund są zaokrąglane.

Do konwersji odcisk CZASOWY (datetime) smalldatetime SQL Server Native Client dyskretnie obcinają wartości sekund zamiast podnoszenie błąd DBSTATUS_E_DATAOVERFLOW.

11

Liczba cyfr drugiego ułamkowych (skala) zależy od rozmiaru kolumna docelowej zgodnie z następujących tabela.Dla kolumna rozmiarach większych niż domniemanych zakres w tabela skalowania 9.Ta konwersja powinny umożliwić maksymalnie dziewięć drugiego cyfr ułamkowych, maksymalną dozwoloną przez OLE DB.

Jednak jeśli typ źródło to odcisk CZASOWY i ułamków sekund jest zero, nie drugiego cyfr ułamkowych lub przecinka dziesiętnego są generowane.To zachowanie wstecz gwarantuje zgodność aplikacji opracowane przy użyciu starszych dostawców OLE DB.

Rozmiar kolumna ~ 0 oznacza nieograniczony rozmiar w OLE DB (9 cyfr, chyba że stosowana reguła 3-cyfrowy dla odcisk CZASOWY).

TypDługość (w znaki)Skala
DBTIME28, 10..180,1..9
ODCISK CZASOWY19, 21..290,1..9
DBTIMESTAMPOFFSET26, 28..360,1..9

12

Semantyka konwersji przed SQL Server 2008 są obsługiwane dla DBTYPE_DATE.Ułamków sekund są obcinane do zera.

13

Semantyka konwersji przed SQL Server 2008 są obsługiwane dla DBTYPE_FILETIME.Jeśli używasz systemu Windows FileTimeToSystemTime API, precision ułamków sekund jest ograniczona do 1 milisekundy.

14

Semantyka konwersji przed SQL Server 2008 dla smalldatetime są utrzymywane.Sekund są zestaw do zera.

15

Semantyka konwersji przed SQL Server 2008 dla datetime są utrzymywane.Sekund są zaokrąglane do najbliższej 300th sekundy.

16

Zachowanie konwersji wartości (danego typu) osadzonych w struct klient SSVARIANT jest tak samo, jak te same wartości i typu nie są osadzone w strukturze klient SSVARIANT.

Zobacz także

Koncepcje