Gelişmiş tarih/saat türü davranışı ile önceki SQL Server sürümleri (ODBC)
Bu konu, Gelişmiş tarih kullanan bir istemci uygulaması, beklenen davranışı açıklar ve Saat Özellikleri iletişim kuran sürüm SQL Server tarihi SQL Server 2008ve Microsoft Data Access Components, Windows Data Access Components veya bir sürüm kullanan bir istemci uygulaması SQL Server Yerel istemci tarihten daha erken SQL Server 2008 komutları Gelişmiş tarih ve saat özellikleri destekleyen bir sunucuya gönderir.
kapalı-Istemci davranışı düzey
Istemci uygulamaları, bir sürüm kullanarak derlendi SQL Server Önce yerel istemci SQL Server 2008 Yeni tarih veya saat türleri, nvarchar sütun olarak bakın. Sütun içeriği değişmez sunumlarını, açıklandığı biçimde olan "veri biçimleri: Dizeler ve rakamları"bölümüVeri türü desteği için ODBC tarih/saat geliştirmeleri. Kesirli saniye duyarlığı sütunu için belirtilen literal uzunluğu en fazla sütun boyutudur.
Meta veri Apı'leri katalog tutarlı döndürecektir kapalı-düzeyde veri (örneğin, nvarchar) istemci ile ilişkili döndürülen kodu yazın kapalı-gösterimi (örneğin, uygun literal biçimi) düzey.Ancak, veri türü adı gerçek olacak döndürdü. SQL Server 2008 tür adı'nı tıklatın.
Döndürülen deyim meta veriler SQLDescribeCol, SQLDescribeParam, SQGetDescField, ve SQLColAttribute tür adı da dahil olmak üzere, tüm respects alt düzey türüyle tutarlı meta veriler döndürecektir. Bu tür kapalı düzey türü örneği nvarchar.
Karşı kapalı düzey istemci uygulaması'ne zaman çalışır bir SQL Server 2008 sunucu türleri tarih/saat için hangi şema değişiklikleri yapıldı, beklenen davranış aşağıdaki gibidir:
SQL Server 2005 türü |
SQL Server 2008 Tür |
ODBC istemci türü |
Sonuç dönüştürme (SQL-C) |
Parametre dönüştürme (SQL C'YE) |
---|---|---|---|---|
Tarih saat |
Date |
sql_c_type_date |
Tamam |
SORUNSUZ (1) |
sql_c_type_timestamp |
Alanların saat küme sıfır. |
SORUNSUZ (2) Saat alan sıfır ise, başarısız olur.Ile çalışır. SQL Server 2005. |
||
saat(0) |
sql_c_type_time |
Tamam |
SORUNSUZ (1) |
|
sql_c_type_timestamp |
Alan tarih küme için geçerli bir tarih. |
SORUNSUZ (2) Tarih yok sayılır.Kesirli saniye sıfır ise başarısız olur.Ile çalışır. SQL Server 2005. |
||
saat(7) |
sql_c_time |
Başarısız-geçersiz saat literal'i tıklatın. |
SORUNSUZ (1) |
|
sql_c_type_timestamp |
Başarısız-geçersiz saat literal'i tıklatın. |
SORUNSUZ (1) |
||
Datetime2(3) |
sql_c_type_timestamp |
Tamam |
SORUNSUZ (1) |
|
Datetime2(7) |
sql_c_type_timestamp |
Tamam |
Değer, 1/300th ikinci istemci dönüştürme göre yuvarlanır. |
|
Smalldatetime |
Date |
sql_c_type_date |
Tamam |
Tamam |
sql_c_type_timestamp |
Alanların saat küme sıfır. |
SORUNSUZ (2) Saat alan sıfır ise, başarısız olur.Ile çalışır. SQL Server 2005. |
||
saat(0) |
sql_c_type_time |
Tamam |
Tamam |
|
sql_c_type_timestamp |
Alan tarih küme için geçerli bir tarih. |
SORUNSUZ (2) Tarih yok sayılır.Kesirli saniye olarak sıfır, başarısız olur. Ile çalışır. SQL Server 2005. |
||
Datetime2(0) |
sql_c_type_timestamp |
Tamam |
Tamam |
Simge anahtar
Simge |
Anlamı |
---|---|
1 |
Ile yaradıysa SQL Server 2005 birlikte çalışmaya devam etmelidir SQL Server 2008. |
2 |
Birlikte çalıştığınız uygulama SQL Server 2005 ile başarısız olabilir SQL Server 2008. |
Yalnızca ortak bir şema değişikliklerini kabul unutmayın.Genel değişiklikler şunlardır:
Yeni bir tür, burada mantıksal olarak uygulama yalnızca bir tarih veya saat değeri gerektirir kullanıyor.Ancak, uygulama datetime veya ayrı bir tarih ve saat türleri yetersizliği yüzünden smalldatetime kullanmak üzere zorlandı.
Yeni ek kesirli saniye duyarlık veya doğruluk elde etmek için kullanma.
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 veriler
Aşağıdaki sütun değerlerini, tarih/saat türlerinde 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.
Sqlgettypeınfo tarafından döndürülen veri türü meta veriler
Aşağıdaki sütun değerlerini, tarih/saat türlerinde 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 |
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 |
kapalı düzey Server davranışı
Bir sunucuya bağlandığınızda örnek önceki sürüm olan SQL Server 2008, yeni sunucu türlerini kullanmaya veya meta veriler kodları ilişkili ve tanımlayıcı alanları iade edilen SQL_ERROR neden olur. SQLSTATE HY004 ve "Geçersiz bir SQL veri türü için bağlantıda sunucu sürüm" iletisi ile veya 07006 ve "veri türü özniteliği ihlali Restricted", tanılama BIR kayıt oluşturulur.