Udostępnij za pośrednictwem


Ulepszone zachowanie typu Data i godzina z poprzednich SQL Server wersji (ODBC)

W tym temacie opisano oczekiwane zachowanie, gdy aplikacja klient korzystającego z enhanced Data i czas funkcje komunikuje się z wersją SQL Server starsze niż SQL Server 2008i gdy aplikacja klient za pomocą składników Microsoft Data Access Components, Windows Data Access Components lub wersja SQL Server Native klient starsze niż SQL Server 2008 wysyła polecenia do serwera obsługującego enhanced Data i czas funkcje.

Zachowanie klienta niższego poziomu

Aplikacje klienckie, które zostały skompilowane przy użyciu wersja SQL Server Native Client przed SQL Server 2008 Zobacz nową datę /czas typy kolumn nvarchar.Zawartość kolumna są literału oświadczenia, zgodnie z opisem w "formaty danych: Ciągi i literałów" sekcja Obsługa typu danych ODBC Data/Godzina ulepszenia. Rozmiar kolumna jest maksymalna długość literału precision ułamków sekund określone dla kolumna.

Wykaz interfejsów API zwróci metadane zgodne z niedziałający-poziomu danych wpisz kod zwracane do klient (na przykład nvarchar) i skojarzonym niedziałający-poziom reprezentacji (na przykład właściwe literału format).Jednak nazwa typu danych zwróconych będzie rzeczywistym SQL Server 2008 nazwy typu.

Metadane instrukcji zwrócony przez SQLDescribeCol, SQLDescribeParam, SQGetDescField, i SQLColAttribute zwróci metadanych, który jest zgodny z niedziałający-poziom typu pod każdym względem, włączając nazwę typu.Przykładem takiego niedziałający-typ poziom jest nvarchar.

Gdy aplikacja klient niższego poziomu uruchamia przeciwko SQL Server 2008 (lub nowsze) serwera na zmiany schematu, które do daty /czas typy zostały dokonane, oczekiwane zachowanie jest następująca:

Typ programu SQL Server 2005

SQL Server 2008 (lub nowszego) typu

Typ klient ODBC

Wynik konwersji (SQL c)

Parametr konwersji (C-SQL)

Datetime

Data

SQL_C_TYPE_DATE

OK

OK (1)

SQL_C_TYPE_TIMESTAMP

Czas pól zestaw do zera.

OK (2)

Kończy się niepowodzeniem, jeśli pole czas jest niezerowa.Współpracuje z SQL Server 2005.

Time(0)

SQL_C_TYPE_TIME

OK

OK (1)

SQL_C_TYPE_TIMESTAMP

Pola Data zestaw do bieżącej data.

OK (2)

Data jest ignorowane.Kończy się niepowodzeniem, jeśli ułamków sekund są zera.Współpracuje z SQL Server 2005.

Time(7)

SQL_C_TIME

Błąd — nieprawidłowa czas literału.

OK (1)

SQL_C_TYPE_TIMESTAMP

Błąd — nieprawidłowa czas literału.

OK (1)

Datetime2(3)

SQL_C_TYPE_TIMESTAMP

OK

OK (1)

Datetime2(7)

SQL_C_TYPE_TIMESTAMP

OK

Wartość zostanie zaokrąglona do drugiego 1 i 300th przez klient konwersji.

Smalldatetime

Data

SQL_C_TYPE_DATE

OK

OK

SQL_C_TYPE_TIMESTAMP

Czas pól zestaw do zera.

OK (2)

Kończy się niepowodzeniem, jeśli pole czas jest niezerowa.Współpracuje z SQL Server 2005.

Time(0)

SQL_C_TYPE_TIME

OK

OK

SQL_C_TYPE_TIMESTAMP

Pola Data zestaw do bieżącej data.

OK (2)

Data jest ignorowane.Kończy się niepowodzeniem, jeśli ułamków sekund zera.

Współpracuje z SQL Server 2005.

Datetime2(0)

SQL_C_TYPE_TIMESTAMP

OK

OK

Klucz do symboli

Symbol

Znaczenie

1

Jeśli go pracował z SQL Server 2005 należy kontynuować pracę z nowszą wersja z SQL Server.

2

Aplikacja pracował z SQL Server 2005 może nie działać z nowszą wersja z SQL Server.

Należy zauważyć, że jedynie wspólne zmiany schematu zostały uwzględnione.Typowe zmiany są następujące:

  • Przy użyciu nowego typu, gdzie logicznie aplikacja wymaga tylko data lub czas wartości.Jednak aplikacja została zmuszona do korzystania z dataczas lub smalldateczas ze względu na brak oddzielnej Data i czas typów.

  • Uzyskanie dodatkowych ułamków sekund precyzji lub dokładności przy użyciu nowego typu.

  • Przełączanie do datetime2, ponieważ jest preferowaną data i czas datatype.

Metadane kolumn zwracanych przez SQLColumns, SQLProcedureColumns i SQLSpecialColumns

Zwracane są następujące wartości w kolumnie Data /czas typów:

Typ kolumny

data

godzina

smalldatetime

data_i_godzina

datetime2

datetimeoffset

DATA_TYPE

SQL_WVARCHAR

SQL_WVARCHAR

SQL_TYPE_TIMESTAMP

SQL_TYPE_TIMESTAMP

SQL_WVARCHAR

SQL_WVARCHAR

TYPE_NAME

data

godzina

smalldatetime

data_i_godzina

datetime2

datetimeoffset

COLUMN_SIZE

10

8,10..16

16

23

19, 21..27

26, 28..34

BUFFER_LENGTH

20

16, 20..32

16

16

38, 42..54

52, 56..68

DECIMAL_DIGITS

NULL

NULL

0

3

NULL

NULL

SQL_DATA_TYPE

SQL_WVARCHAR

SQL_WVARCHAR

SQL_DATETIME

SQL_DATETIME

SQL_WVARCHAR

SQL_WVARCHAR

SQL_DATETIME_SUB

NULL

NULL

SQL_CODE_TIMESTAMP

SQL_CODE_TIMESTAMP

NULL

NULL

CHAR_OCTET_LENGTH

NULL

NULL

NULL

NULL

NULL

NULL

SS_DATA_TYPE

0

0

111

111

0

0

SQLSpecialColumns zwraca SQL_DATA_TYPE, SQL_DATETIME_SUB, CHAR_OCTET_LENGTH lub SS_DATA_TYPE.

Metadane typ danych zwróconej przez SQLGetTypeInfo

Zwracane są następujące wartości w kolumnie Data /czas typów:

Typ kolumny

data

godzina

smalldatetime

data_i_godzina

datetime2

datetimeoffset

TYPE_NAME

data

godzina

smalldatetime

data_i_godzina

datetime2

datetimeoffset

DATA_TYPE

SQL_WVARCHAR

SQL_WVARCHAR

SQL_TYPE_TIMESTAMP

SQL_TYPE_TIMESTAMP

SQL_WVARCHAR

SQL_WVARCHAR

COLUMN_SIZE

10

16

16

23

27

34

LITERAL_PREFIX

LITERAL_SUFFIX

CREATE_PARAMS

NULL

NULL

NULL

NULL

NULL

NULL

NULLABLE

SQL_NULLABLE

SQL_NULLABLE

SQL_NULLABLE

SQL_NULLABLE

SQL_NULLABLE

SQL_NULLABLE

CASE_SENSITIVE

SQL_FALSE

SQL_FALSE

SQL_FALSE

SQL_FALSE

SQL_FALSE

SQL_FALSE

PRZESZUKIWANIE

SQL_PRED_SEARCHABLE

SQL_PRED_SEARCHABLE

SQL_PRED_SEARCHABLE

SQL_PRED_SEARCHABLE

SQL_PRED_SEARCHABLE

SQL_PRED_SEARCHABLE

UNSIGNED_ATTRIBUTE

NULL

NULL

NULL

NULL

NULL

NULL

FXED_PREC_SCALE

SQL_FALSE

SQL_FALSE

SQL_FALSE

SQL_FALSE

SQL_FALSE

SQL_FALSE

AUTO_UNIQUE_VALUE

NULL

NULL

NULL

NULL

NULL

NULL

LOCAL_TYPE_NAME

data

godzina

smalldatetime

data_i_godzina

datetime2

datetimeoffset

MINIMUM_SCALE

NULL

NULL

0

3

NULL

NULL

MAXIMUM_SCALE

NULL

NULL

0

3

NULL

NULL

SQL_DATA_TYPE

SQL_WVARCHAR

SQL_WVARCHAR

SQL_DATETIME

SQL_DATETIME

SQL_WVARCHAR

SQL_WVARCHAR

SQL_DATETIME_SUB

NULL

NULL

SQL_CODE_TIMESTAMP

SQL_CODE_TIMESTAMP

NULL

NULL

NUM_PREC_RADIX

NULL

NULL

NULL

NULL

NULL

NULL

INTERVAL_PRECISION

NULL

NULL

NULL

NULL

NULL

NULL

USERTYPE

0

0

12

22

0

0

Zachowanie serwerowe niskiego poziomu

Podczas połączenia z wystąpienie serwera wcześniejszej wersja, SQL Server 2008, wszystkie próby użycia nowych typów serwera lub kody metadane skojarzonych i pola deskryptora spowoduje zwracanych wartość SQL_ERROR. Diagnostyczne rekord zostanie wygenerowany z SQLSTATE HY004 i komunikat "SQL nieprawidłowy typ danych dla wersja serwera połączenia" lub z 07006 i "Naruszenie atrybut typu danych z ograniczeniami".

Zobacz także

Koncepcje