Udostępnij za pośrednictwem


Zmiany kopii zbiorczego dla typów Enhanced Data/Godzina (OLE DB i ODBC)

W tym temacie opisano data /czas funkcji kopiowania ulepszenia obsługi luzem.Informacje w tym temacie jest prawidłowy dla OLE DB i ODBC, w SQL Server macierzystego klienta.

Format plików

Podczas kompilowania plików w formacie interaktywnie, w poniższej tabela opisano wejściowe używane do określenia daty /czas typów i odpowiadających im danych pliku hosta wpisz nazwy.

Typ magazynu plików

Typ danych pliku hosta

Odpowiedzi na monit: "Wprowadź typ pliku magazynu pole <field_name > <domyślne>:"

Datetime

ELEMENT SQLDATETIME

d

Smalldatetime

SQLDATETIM4

D

Data

SQLDATE

de

Godzina

SQLTIME

te

Datetime2

SQLDATETIME2

D2

Datetimeoffset

SQLDATETIMEOFFSET

Wykonaj

XML plik formatu XSD będą miały następujące dodatki:

    <xs:complexType name="SQLDATETIME2">
        <xs:complexContent>
            <xs:extension base="bl:Fixed"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="SQLDATETIMEOFFSET">
        <xs:complexContent>
            <xs:extension base="bl:Fixed"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="SQLDATE">
        <xs:complexContent>
            <xs:extension base="bl:Fixed"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="SQLTIME">
        <xs:complexContent>
            <xs:extension base="bl:Fixed"/>
        </xs:complexContent>
    </xs:complexType>

Pliki danych znak

W plikach danych znak, Data i czas wartości są reprezentowane zgodnie z opisem w "formaty danych: Ciągi i literałów" sekcja Obsługa typu danych ODBC Data/Godzina ulepszenia dla ODBC, lub Obsługa typu danych OLE DB Data/Godzina ulepszenia dla OLE DB.

W danych w trybie macierzystym plki Data i czas wartości dla cztery nowe typy są reprezentowane jako ich oświadczenia TDS skalę 7 (ponieważ jest maksymalną obsługiwaną przez SQL Server i pliki danych bcp należy przechowywać skali tych kolumn).Nie ma żadnej zmiany do magazynu istniejącej datetime i smalldatetime typu lub ich strumień danych tabelarycznych (TDS) oświadczenia.

Rozmiary pamięci masowej do przechowywania różnych typów są następujące for OLE DB:

Typ magazynu plików

Rozmiar w bajtach

data_i_godzina

8

smalldatetime

4

data

3

godzina

6

datetime2

9

datetimeoffset

11

Rozmiary wynoszą dla ODBC.Należy zauważyć, że nie jest konieczne przechowywanie precyzji w plikach formatu lub danych, ponieważ BCP.exe będzie zawsze pobierać precision z serwera.

Typ magazynu plików

Rozmiar w bajtach

Format przechowywania

DATETIME (d)

8

TDS

smalldatetime (D)

4

TDS

Data (de)

3

TDS

czas (te)

6

TDS

datetime2 (d2)

9

TDS

datetimeoffset (do)

11

TDS

Typy BCP w sqlncli.h

Następujące typy są zdefiniowane w sqlncli.h z rozszerzenia BCP API ODBC.Te typy są przekazywane z eUserDataType parametr IBCPSession::BCPColFmt OLE DB.

Typ magazynu plików

Typ danych pliku hosta

Wpisz sqlncli.h do użytku z IBCPSession::BCPColFmt

Wartość

Datetime

ELEMENT SQLDATETIME

BCP_TYPE_SQLDATETIME

0x3d

Smalldatetime

SQLDATETIM4

BCP_TYPE_SQLDATETIME4

0x3a

Data

SQLDATE

BCP_TYPE_SQLDATE

0x28

Godzina

SQLTIME

BCP_TYPE_SQLTIME

0x29

Datetime2

SQLDATETIME2

BCP_TYPE_SQLDATETIME2

0x2A

Datetimeoffset

SQLDATETIMEOFFSET

BCP_TYPE_SQLDATETIMEOFFSET

0x2B

Konwersje typów danych BCP

Poniższe tabele zawierają informacje o konwersji.

OLE DB Note   The following conversions are performed by IBCPSession.IRowsetFastLoad uses OLE DB conversions as defined in Konwersje wykonywane z klienta do serwera.Należy zauważyć, że wartości datetime są zaokrąglane do 1/300th, druga i smalldatetime wartości mają sekund zestaw do zera po konwersji klient opisane poniżej zostały wykonane.DATETIME zaokrąglania rozchodzi się poprzez godzin i minut, ale nie z data.

Aby-->

Z

data

godzina

smalldatetime

data_i_godzina

datetime2

datetimeoffset

CHAR

WChar

Data

1

-

1,6

1,6

1,6

1,5,6

1,3

1,3

Godzina

Brak

1,10

1,7,10

1,7,10

1,7,10

1,5,7,10

1,3

1,3

Smalldatetime

1,2

1,4,10

1

1

1,10

1,5,10

1,11

1,11

Datetime

1,2

1,4,10

1,12

1

1,10

1,5,10

1,11

1,11

Datetime2

1,2

1,4,10

1,10 (ODBC) 1,12 (OLE DB)

1,10

1,10

1,5,10

1,3

1,3

Datetimeoffset

1,2,8

1,4,8,10

1,8,10

1,8,10

1,8,10

1,10

1,3

1,3

CHAR/wchar (Data)

9

-

9,6 (ODBC) 9,6,12 (OLE DB)

9,6 (ODBC) 9,6,12 (OLE DB)

9,6

9,5,6

Brak

Brak

CHAR/wchar (czas)

-

9,10

9,7,10 (ODBC) 9,7,10,12 (OLE DB)

9,7,10 (ODBC) 9,7,10, 12 (OLE DB)

9,7,10

9,5,7,10

Brak

Brak

CHAR/wchar (datetime)

9,2

9,4,10

9, 10 (ODBC) 9,10,12 (OLE DB)

9, 10 (ODBC) 9,10,12 (OLE DB)

9,10

9,5,10

Brak

Brak

CHAR/wchar (datetimeoffset)

9,2,8

9,4,8,10

9,8,10 (ODBC) 9,8,10,12 (OLE DB)

9,8,10 (ODBC) 9,8,10,12 (OLE DB)

9,8,10

9,10

Brak

Brak

Klucz do symboli

Symbol

Znaczenie

-

Konwersja nie jest obsługiwane.

Rekord diagnostyczne ODBC jest generowana z SQLSTATE 07006 i komunikat "ograniczonego typu danych atrybut".

1

Jeśli dostarczonych danych jest nieprawidłowa, generowany jest rekord diagnostyczne ODBC z SQLSTATE 22007 i komunikat "datetime nieprawidłowy format".Dataczas, wartości przesunięcia czas część musi być w zakresie po konwersji na UTC, nawet jeśli żądana bez konwersji na UTC.Jest to spowodowane TDS i serwer zawsze znormalizować czas w wartości datetimeoffset dla czasu UTC.Aby klient musi sprawdzić, czy czas składniki są w zakresie obsługiwane po konwersji na UTC.

2

czas Składnik jest ignorowana.

3

Dla ODBC Jeśli nastąpi obcięcie utraty danych, diagnostyczne rekord jest generowany z SQLSTATE 22001 i wiadomości danych String prawo obcięty Liczba cyfr ułamków sekund (skala) zależy od rozmiaru kolumna docelowej zgodnie z następujących tabela.Dla kolumna rozmiarach większych niż domniemanych zakres w tabela skalowania 7.Ta konwersja powinny umożliwić do dziewięciu drugiego cyfr ułamkowych, maksymalną dozwoloną przez sterownik ODBC.

TypSkala wprost0Skala wprost1..7
DBTIME2810,16
ODCISK CZASOWY1921..27
DBTIMESTAMPOFFSET2628..34

Dla OLE DB jeżeli nastąpi obcięcie utraty danych, błąd jest księgowany.Dla datetime2, liczba cyfr ułamków sekund (skala) zależy od rozmiaru kolumna docelowej zgodnie z następujących tabela.Dla kolumna rozmiar większy niż zakres w tabela domniemanych skali 9.Ta konwersja powinny umożliwić maksymalnie dziewięć drugiego cyfr ułamkowych, maksymalną dozwoloną przez OLE DB.

TypSkala wprost0Skala wprost1..9
DBTIME281..9
ODCISK CZASOWY1921..29
DBTIMESTAMPOFFSET2628..36

4

Składnik data jest ignorowana.

5

Strefa czasowa jest zestaw do czasu UTC (na przykład, 00: 00).

6

Czas jest zestaw do zera.

7

Data jest zestaw do 1900-01-01.

8

Przesunięcie timezone jest ignorowana.

9

Analizowany ciąg i przekonwertowana na data, dataczas, dataczasprzesunięcie, lub czas wartości, w zależności od pierwszego napotkano znak interpunkcji i obecność pozostałe składniki.Ciąg jest następnie konwertowana na typ miejsce docelowe, następujących reguł w tabela na końcu tego tematu typ źródło wykryte przez ten proces.Jeśli nie można analizować dane dostarczone bez błędów, lub jeśli dowolny składnik jest spoza zakres lub Jeśli konwersja z typu literał typ miejsce docelowe, błąd zostanie zaksięgowana (OLE DB) lub rekord diagnostyczne ODBC jest generowana z SQLSTATE 22018 i komunikat "nieprawidłowy znak wartość dla specyfikacji".Parametry datetime i smalldatetime Jeśli rok jest spoza zakres obsługi tych typów, błąd księgowania (OLE DB) lub rekord diagnostyczne ODBC jest generowana z SQLSATE 22007 i komunikat "datetime nieprawidłowy format".

Dla datetimeoffset, wartość musi być w zakres po konwersji na UTC, nawet jeśli żądana bez konwersji na UTC.Wynika to TDS i serwer zawsze znormalizować czas w wartości datetimeoffset dla UTC, klient musi sprawdzić tego czasu składniki są w zakres obsługiwane po konwersji na UTC.Jeśli wartość nie jest obsługiwane zakres UTC, błąd zostanie zaksięgowana (OLE DB) lub rekord diagnostyczne ODBC jest generowana z SQLSTATE 22007 i komunikat "datetime nieprawidłowy format".

10

Jeśli obcinania utraty danych występuje na klient server konwersja błąd księgowania (OLE DB) lub rekord diagnostyczne ODBC jest generowana z SQLSTATE 22008 i komunikat "Przepełnienie pole typu Data/Godzina".Ten błąd występuje również, jeżeli wartość mieści się poza zakresem, który może być reprezentowany przez zakres UTC, używany przez serwer.Jeśli wystąpi sekund lub obcinania ułamków sekund na serwerze do konwersji klient, istnieje tylko ostrzeżenia.

11

Jeśli obcięte utraty danych, generowany jest rekord diagnostycznych.

W przypadku konwersji klient serwera jest ostrzeżenie (ODBC SQLSTATE S1000).

Na konwersji typu klient serwer jest to błąd (ODBC SQLSTATE 22001).

12

Sekund są zestaw do zera i ułamków sekund są odrzucane.Błąd obcinania nie jest możliwe.

Brak

Istniejące SQL Server 2005 i starsze zachowanie jest utrzymywana.