Ulepszone Data / czas typ zachowania z poprzednich wersji serwera SQL (ODBC)
W tym temacie opisano oczekiwane zachowanie, gdy aplikacja klient, która używa rozszerzonego daty i czas funkcji komunikuje się za pomocą wersja programu SQL Server starsze niż SQL Server 2008, a gdy aplikacja klient, za pomocą składników Microsoft Data Access Components, system Windows Data Access Components lub wersja programu SQL Server Macierzysta klient starsze niż SQL Server 2008 wysyła polecenia do serwera, który obsługuje rozszerzone daty i czas funkcji.
Zachowanie klient poziom niedziałający
Aplikacje klienckie, które zostały skompilowane przy użyciu wersja programu SQL Server Macierzysta klient przed SQL Server 2008 Zobacz typy nowe data i godziny jako kolumny nvarchar. Zawartość kolumna jest literałem reprezentacje zgodnie z opisem w "formatów danych: Ciągi i literały"sekcjiObsługa typu danych dla ulepszenia ODBC Data/Godzina. Rozmiar kolumna jest maksymalna długość literału dokładność ułamków sekund określona dla kolumna.
Katalog interfejsów API zwróci metadane zgodne z niedziałający-kod zwrócony do klient (na przykład, nvarchar) i skojarzonym typie danych poziomu niedziałający-poziom reprezentację (na przykład odpowiedni literału format).Jednak nazwa typu danych zwróconych będzie rzeczywistych SQL Server 2008 Nazwa typu.
Metadane instrukcja zwrócone przez SQLDescribeCol, SQLDescribeParam, SQGetDescField, a SQLColAttribute Zwraca wartość metadane, które są zgodne z niedziałający-poziom typu pod względem wszystkich, łącznie z nazwą typu. Na przykład typu niskiego poziom nvarchar.
Gdy aplikacja klient niższego poziom jest uruchamiana przed SQL Server 2008 serwer, na których zmiany schematu na datę / czas typów zostaną wprowadzone, oczekiwane zachowanie jest następująca:
Typ programu SQL Server 2005 |
SQL Server 2008 Typ |
Typ klient ODBC |
Wynik konwersji (SQL c) |
Parametr konwersji (C-SQL) |
---|---|---|---|---|
Data i godzina |
Data |
SQL_C_TYPE_DATE |
OK |
OK (1) |
SQL_C_TYPE_TIMESTAMP |
Czas pól zestaw na zero. |
OK (2) Kończy się niepowodzeniem, jeśli pole czas jest różna od zera.Współpracuje z SQL Server 2005. |
||
czas(0) |
SQL_C_TYPE_TIME |
OK |
OK (1) |
|
SQL_C_TYPE_TIMESTAMP |
Data pola zestaw do bieżącej data. |
OK (2) Data jest ignorowana.Kończy się niepowodzeniem, jeśli ułamków sekund są od zera.Współpracuje z SQL Server 2005. |
||
czas(7) |
SQL_C_TIME |
Niepowodzenie — czas Nieprawidłowy literał. |
OK (1) |
|
SQL_C_TYPE_TIMESTAMP |
Niepowodzenie — czas Nieprawidłowy literał. |
OK (1) |
||
Datetime2(3) |
SQL_C_TYPE_TIMESTAMP |
OK |
OK (1) |
|
Datetime2(7) |
SQL_C_TYPE_TIMESTAMP |
OK |
Wartość zostanie zaokrąglona do 1/300th sekundy, przez przekształcenie klient. |
|
Smalldatetime |
Data |
SQL_C_TYPE_DATE |
OK |
OK |
SQL_C_TYPE_TIMESTAMP |
Czas pól zestaw na zero. |
OK (2) Kończy się niepowodzeniem, jeśli pole czas jest różna od zera.Współpracuje z SQL Server 2005. |
||
czas(0) |
SQL_C_TYPE_TIME |
OK |
OK |
|
SQL_C_TYPE_TIMESTAMP |
Data pola zestaw do bieżącej data. |
OK (2) Data jest ignorowana.Kończy się niepowodzeniem, jeśli ułamków sekund od zera. Współpracuje z SQL Server 2005. |
||
Datetime2(0) |
SQL_C_TYPE_TIMESTAMP |
OK |
OK |
Klucz do symboli
Symbol |
Znaczenie |
---|---|
1 |
Jeśli jego pracy z SQL Server 2005 należy kontynuować pracę z SQL Server 2008. |
2 |
Działające z aplikacji SQL Server 2005 może nie działać z SQL Server 2008. |
Należy zwrócić uwagę, zostały uwzględnione jedynie typowych zmian schematu.Poniżej przedstawiono typowe zmiany:
Za pomocą nowego typu, w której logicznie aplikacja wymaga tylko datę lub czas wartości.Jednak aplikacja została zmuszona do korzystania z typu Data/Godzina lub smalldatetime ze względu na Brak daty oddzielne i typy wartości czas.
Uzyskanie dokładność ułamkowa kilka sekund lub dokładności przy użyciu nowego typu.
Przełączanie do datetime2, ponieważ jest to preferowany data i czas typu danych.
Zwrócone przez SQLColumns SQLProcedureColumns i SQLSpecialColumns metadane kolumna
Następujące wartości kolumn są zwracane dla daty / czas typów:
Typ kolumna |
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 |
WARTOŚCI NULL |
WARTOŚCI NULL |
0 |
3 |
WARTOŚCI NULL |
WARTOŚCI NULL |
SQL_DATA_TYPE |
SQL_WVARCHAR |
SQL_WVARCHAR |
SQL_DATETIME |
SQL_DATETIME |
SQL_WVARCHAR |
SQL_WVARCHAR |
SQL_DATETIME_SUB |
WARTOŚCI NULL |
WARTOŚCI NULL |
SQL_CODE_TIMESTAMP |
SQL_CODE_TIMESTAMP |
WARTOŚCI NULL |
WARTOŚCI NULL |
CHAR_OCTET_LENGTH |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
SS_DATA_TYPE |
0 |
0 |
111 |
111 |
0 |
0 |
SQLSpecialColumns nie zwraca SQL_DATA_TYPE, SQL_DATETIME_SUB, CHAR_OCTET_LENGTH lub SS_DATA_TYPE.
Metadane typ danych zwracanych przez SQLGetTypeInfo
Następujące wartości kolumn są zwracane dla daty / czas typów:
Typ kolumna |
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 |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
ZEROWALNE |
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 |
MOŻNA WYSZUKIWAĆ |
SQL_PRED_SEARCHABLE |
SQL_PRED_SEARCHABLE |
SQL_PRED_SEARCHABLE |
SQL_PRED_SEARCHABLE |
SQL_PRED_SEARCHABLE |
SQL_PRED_SEARCHABLE |
UNSIGNED_ATTRIBUTE |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
FXED_PREC_SCALE |
SQL_FALSE |
SQL_FALSE |
SQL_FALSE |
SQL_FALSE |
SQL_FALSE |
SQL_FALSE |
AUTO_UNIQUE_VALUE |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
LOCAL_TYPE_NAME |
data |
godzina |
Smalldatetime |
data_i_godzina |
datetime2 |
datetimeoffset |
MINIMUM_SCALE |
WARTOŚCI NULL |
WARTOŚCI NULL |
0 |
3 |
WARTOŚCI NULL |
WARTOŚCI NULL |
MAXIMUM_SCALE |
WARTOŚCI NULL |
WARTOŚCI NULL |
0 |
3 |
WARTOŚCI NULL |
WARTOŚCI NULL |
SQL_DATA_TYPE |
SQL_WVARCHAR |
SQL_WVARCHAR |
SQL_DATETIME |
SQL_DATETIME |
SQL_WVARCHAR |
SQL_WVARCHAR |
SQL_DATETIME_SUB |
WARTOŚCI NULL |
WARTOŚCI NULL |
SQL_CODE_TIMESTAMP |
SQL_CODE_TIMESTAMP |
WARTOŚCI NULL |
WARTOŚCI NULL |
NUM_PREC_RADIX |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
INTERVAL_PRECISION |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
WARTOŚCI NULL |
USERTYPE |
0 |
0 |
12 |
22 |
0 |
0 |
Zachowanie serwera poziom niedziałający
Podczas połączenia z wystąpienie serwera z wcześniejszej wersja, SQL Server 2008, dowolne próbować używać nowych typów serwerów lub skojarzony metadane kodów i pól deskryptora spowoduje SQL_ERROR zwracanych. Diagnostyczne rekord zostanie wygenerowany HY004 SQLSTATE i komunikat "SQL nieprawidłowy typ danych dla serwera w wersja dla połączenia" lub 07006 i "Z ograniczeniami naruszenie atrybut typu danych".