Aracılığıyla paylaş


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.