Gelişmiş tarih ve Saat türü davranışı ile önceki SQL Server sürümler (odbc)
Gelişmiş tarih ve saat özellikleri kullanan bir istemci uygulaması bir sürümüyle kurduğunda beklenen davranışı açıklanmıştır SQL Serverdaha önce SQL Server 2008ve Microsoft veri erişim bileşenleri, Windows Data Access Components veya bir sürümünü kullanarak bir istemci uygulaması ne zaman SQL Serveryerel istemci daha erken SQL Server 2008destekleyen Gelişmiş tarih ve saat özellikleri komutları sunucuya gönderir.
Alt düzey istemci davranışı
Bir sürümü ile derlendi istemci uygulamaları SQL ServerÖnce yerel istemci SQL Server 2008Yeni Tarih ve saat türleri nvarchar sütun olarak bkz. Sütun içeriği "Veri biçimleri: dizeler ve harflerin" açıklandığı gibi edebi temsilcilikleri vardır bölümünde odbc tarih/saat geliştirmeleri için veri türü desteği. Sütun boyutu için kesirli saniye duyarlık sütunu için belirtilen maksimum edebi uzunluğudur.
Katalog API'leri meta verileri (örneğin, nvarchar) istemci ile ilişkili alt düzey gösterimi (örneğin, uygun hazır bilgi biçimi) döndürülen alt düzey veri türü kodu ile tutarlı dönecektir. Ancak, gerçek olacak veri türü adı verilen SQL Server 2008türü adı.
Deyimi meta verileri tarafından döndürülen SQLDescribeCol, SQLDescribeParam, SQGetDescField, ve SQLColAttributedüzey türü tür adı dahil olmak üzere her açıdan tutarlı meta veri-ecek dönmek. Böyle bir alt düzey türü örneği olduğunu nvarchar.
Alt düzey istemci uygulama çalışınca karşı bir SQL Server 2008(veya üstü) sunucusu, Tarih/Saat için hangi şema değişiklikleri türleri yapılmış beklenen davranışı 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 (sql c) |
---|---|---|---|---|
DateTime |
Tarihi |
SQL_C_TYPE_DATE |
Tamam |
OK (1) |
SQL_C_TYPE_TIMESTAMP |
Saat alanları sıfır olarak ayarlayın. |
OK (2) Saat alanı sıfır ise başarısız. İnşaat ile SQL Server 2005. |
||
Time(0) |
SQL_C_TYPE_TIME |
Tamam |
OK (1) |
|
SQL_C_TYPE_TIMESTAMP |
Tarih alanları, geçerli tarih olarak ayarlamak. |
OK (2) Tarih yoksayılır. Kesirli saniye sıfır başarısız olur. İnşaat ile SQL Server 2005. |
||
Time(7) |
SQL_C_TIME |
Başarısız – geçersiz zaman değişmez. |
OK (1) |
|
SQL_C_TYPE_TIMESTAMP |
Başarısız – geçersiz zaman değişmez. |
OK (1) |
||
Birdatetime2 (3) |
SQL_C_TYPE_TIMESTAMP |
Tamam |
OK (1) |
|
Birdatetime2 (7) |
SQL_C_TYPE_TIMESTAMP |
Tamam |
Değer 1/300th saniye istemci dönüştürme yuvarlanır. |
|
Smalldatetime |
Tarihi |
SQL_C_TYPE_DATE |
Tamam |
Tamam |
SQL_C_TYPE_TIMESTAMP |
Saat alanları sıfır olarak ayarlayın. |
OK (2) Saat alanı sıfır ise başarısız. İnşaat ile SQL Server 2005. |
||
Time(0) |
SQL_C_TYPE_TIME |
Tamam |
Tamam |
|
SQL_C_TYPE_TIMESTAMP |
Tarih alanları, geçerli tarih olarak ayarlamak. |
OK (2) Tarih yoksayılır. Kesirli saniye sıfır başarısız olur. İnşaat ile SQL Server 2005. |
||
Birdatetime2 (0) |
SQL_C_TYPE_TIMESTAMP |
Tamam |
Tamam |
Semboller için anahtar
Simge |
Anlamı |
---|---|
1 |
Eğer o amele-e ile SQL Server 2005o daha yeni bir sürümü ile çalışmaya devam SQL Server. |
2 |
İle çalışan uygulama SQL Server 2005daha yeni bir sürümü ile başarısız olabilir SQL Server. |
Not yalnızca ortak şema değişiklikleri kabul. Genel değişiklikler şunlardır:
Yeni bir türü kullanarak burada mantıklı bir uygulama sadece bir tarih veya saat değeri gerektirir. Ancak, uygulamanın datetime veya smalldatetime ayrı Tarih ve saat türleri eksikliği nedeniyle kullanmak zorunda kaldı.
Ek Kesirli saniye duyarlık veya doğruluk kazanmak için yeni bir türü kullanı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 ve saat türleri döndürülür:
Sütun türü |
tarihi |
Saat |
smalldatetime |
datetime |
datetime2 |
datetimeoffset |
---|---|---|---|---|---|---|
DATA_TYPE |
SQL_WVARCHAR |
SQL_WVARCHAR |
SQL_TYPE_TIMESTAMP |
SQL_TYPE_TIMESTAMP |
SQL_WVARCHAR |
SQL_WVARCHAR |
TYPE_NAME |
tarihi |
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 ve saat türleri döndürülür:
Sütun türü |
tarihi |
Saat |
smalldatetime |
datetime |
datetime2 |
datetimeoffset |
---|---|---|---|---|---|---|
TYPE_NAME |
tarihi |
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 |
BUYUKLUK_DUYARLİ |
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 |
tarihi |
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 |
Aşağı düzey Server davranışı
Önceki bir sunucu örneğine bağlandığında, SQL Server 2008, yeni sunucu türlerini kullanmaya teşebbüs veya ilişkili meta kodlarını ve tanımlayıcısı alanları içinde iade edilen sql_error sonuçlanır. Tanılama kaydı sqlstate HY004 ve mesaj "Geçersiz sql veri türü için bağlantı sunucu sürümü" veya 07006 ve "yasak veri türü özniteliği ihlali" ile oluşturulur.