Önceki SQL Server sürümler (odbc) ile Gelişmiş tarih/saat türü davranışı
Gelişmiş tarih ve Saat Özellikleri'ni kullanan bir istemci uygulaması bir sürüm ile iletişim kurduğunda, bu konuda Beklenen davranış açıklanır 'denSQL Server önceki SQL Server 2008ve Microsoft veri erişim bileşenleri, Windows Data Access Components veya bir sürüm kullanarak bir istemci uygulaması, SQL Server Native Client daha önceki SQL Server 2008 Gelişmiş tarih ve destekleyen bir sunucuya komut gönderirsaat özellikleri.
Alt düzey istemci davranışı
Bir sürüm kullanarak derlenmiş istemci uygulamaları SQL Server Önce Native Client SQL Server 2008 bakın yeni tarih/saat türleri olarak nvarchar sütun.Sütun içeriği değişmez gösterimler de anlatıldığı gibi "veri formatları: Dizeler ve rakamları" kısmında odbc tarih/saat geliştirmeleri için veri türü desteği. Belirtilen sütun. için Kesirli saniye duyarlık için hazır uzunluğu en fazla sütun boyutu olabilir
Katalog API'leri döndürecektir meta veriler tutarlı olan kapalı-düzey veri türü (örneğin, nvarchar) istemci ile ilişkili döndürülen kodu kapalı-düzey gösterimi (örneğin, uygun hazır bilgi biçimi).Ancak, gerçek olacak veri türü adı verilen SQL Server 2008 türü adı.
Deyimi meta veriler tarafından döndürülen SQLDescribeCol, SQLDescribeParam, SQGetDescField, ve SQLColAttribute ile tutarlı meta veriler döndürür kapalı-düzey türü adı. dahil olmak üzere tüm açılardan yazıylaÖrnek olarak böyle bir kapalı-düzey türü olan nvarchar.
Zaman bir kapalı-düzey istemci uygulamasını çalıştırır karşı bir SQL Server 2008 (veya üstü) sunucu hangi şema değişiklikleri için tarih/saat türleri yapıldı, beklenen davranış değeri aşağıdaki gibidir:
sql Server 2005 türü |
sql Server 2008 (veya üstü) türü |
odbc istemci türü |
Sonuç dönüştürme (sql c) |
Parametre dönüştürme (c SQL'e) |
---|---|---|---|---|
Tarih saat |
Date |
SQL_C_TYPE_DATE |
Tamam |
TAMAM (1) |
SQL_C_TYPE_TIMESTAMP |
Saat alanları küme sıfır. |
TAMAM (2) Saat alan sıfır ise, başarısız olur.Birlikte çalıştığı SQL Server 2005. |
||
Time(0) |
SQL_C_TYPE_TIME |
Tamam |
TAMAM (1) |
|
SQL_C_TYPE_TIMESTAMP |
Tarih alanları küme için geçerli tarih. |
TAMAM (2) Tarih yoksayılır.Kesirli saniye sıfır olmayan, başarısız olur.Birlikte çalıştığı SQL Server 2005. |
||
Time(7) |
SQL_C_TIME |
Başarısız – geçersiz saat değişmez. |
TAMAM (1) |
|
SQL_C_TYPE_TIMESTAMP |
Başarısız – geçersiz saat değişmez. |
TAMAM (1) |
||
Datetime2(3) |
SQL_C_TYPE_TIMESTAMP |
Tamam |
TAMAM (1) |
|
Datetime2(7) |
SQL_C_TYPE_TIMESTAMP |
Tamam |
Değer 1/300th saniye olarak istemci dönüştürme yuvarlanır. |
|
Smalldatetime |
Date |
SQL_C_TYPE_DATE |
Tamam |
Tamam |
SQL_C_TYPE_TIMESTAMP |
Saat alanları küme sıfır. |
TAMAM (2) Saat alan sıfır ise, başarısız olur.Birlikte çalıştığı SQL Server 2005. |
||
Time(0) |
SQL_C_TYPE_TIME |
Tamam |
Tamam |
|
SQL_C_TYPE_TIMESTAMP |
Tarih alanları küme için geçerli tarih. |
TAMAM (2) Tarih yoksayılır.Kesirli saniye sıfır olmayan, başarısız olur. Birlikte çalıştığı SQL Server 2005. |
||
Datetime2(0) |
SQL_C_TYPE_TIMESTAMP |
Tamam |
Tamam |
Simge anahtarı
Simge |
Anlamı |
---|---|
1 |
İle yaradıysa SQL Server 2005 onu devam etmelidir daha yeni bir sürüm ile çalışmak SQL Server. |
2 |
İle çalışan bir uygulama SQL Server 2005 daha yeni bir sürüm ile başarısız SQL Server. |
Yalnızca ortak şema değişiklikleri kabul unutmayın.Genel değişiklikler şunlardır:
Burada mantıksal olarak bir uygulama yalnızca bir tarih veya saat değeri gerektiren yeni bir türü kullanıyor.Ancak, uygulama, datetime veya smalldatetime ayrı tarih ve saat türleri yetersizliği yüzünden kullanmak için zorlandı.
Yeni bir tür ek Kesirli saniye duyarlık veya doğruluk kazanmak için kullanılıyor.
Bu tercih edilen tarih ve saat veri türü olduğundan datetime2 için geçiş yapma.
SQLColumns SQLProcedureColumns ve SQLSpecialColumns tarafından döndürülen sütun meta veri
Aşağıdaki sütun değerleri için tarih/saat türleri döndürülür:
Sütun türü |
tarih |
saat |
smalldatetime |
datetime |
datetime2 |
datetimeoffset |
---|---|---|---|---|---|---|
DATA_TYPE |
SQL_WVARCHAR |
SQL_WVARCHAR |
SQL_TYPE_TIMESTAMP |
SQL_TYPE_TIMESTAMP |
SQL_WVARCHAR |
SQL_WVARCHAR |
TYPE_NAME |
tarih |
saat |
smalldatetime |
datetime |
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 sql_data_type, SQL_DATETIME_SUB, char_octet_length veya ss_data_type döndürmez.
SQLGetTypeInfo tarafından döndürülen veri türü meta verileri
Aşağıdaki sütun değerleri için tarih/saat türleri döndürülür:
Sütun türü |
tarih |
saat |
smalldatetime |
datetime |
datetime2 |
datetimeoffset |
---|---|---|---|---|---|---|
TYPE_NAME |
tarih |
saat |
smalldatetime |
datetime |
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 |
NULL OLABİLECEK |
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 |
ARANABİLİR |
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 |
tarih |
saat |
smalldatetime |
datetime |
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 |
Alt düzey Server davranışı
Önceki bir sunucu örneğine bağlandığında, SQL Server 2008, yeni sunucu türlerini kullanmaya çalışırlar veya ilişkili meta veriler kodları ve açıklayıcı alanlar içinde iade edilen SQL_ERROR hatası neden. Tanılama kaydı sqlstate HY004 ve "Geçersiz sql veri türü bağlantı sunucu sürüm için" ileti veya 07006 ve "Yasak veri türü öznitelik ihlali" ile oluşturulacak.