Yeni Tarih ve saat özellikleri ile önceki SQL Server sürümler (ole db)

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 bir sürümü ile derlenmiş bir istemci 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ü kullanan istemci uygulamaları SQL Serveryerel istemci daha erken SQL Server 2008Yeni Tarih/saat türleri olarak görmek nvarcharsütun. Sütun içeriği değişmez temsilcilikleri bulunmaktadır. Daha fazla bilgi için bkz: "veri biçimleri: dizeler ve rakamları" bölümünde ole db tarih/saat geliştirmeleri için veri türü desteği. Belirtilen sütun için duyarlık edebi uzunluğu en fazla sütun boyutu olabilir.

Katalog API'leri meta verileri istemciye döndürülen alt düzey veri türü kodu ile tutarlı dönecektir (örneğin, nvarchar) ve ilişkili alt düzey gösterimi (örneğin, uygun hazır bilgi biçimi). Ancak, gerçek olacak veri türü adı verilen SQL Server 2008türü adı.

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:

ole db istemci türü

SQL Server 2005 türü

SQL Server 2008 (veya üstü) türü

Sonuç dönüştürme (sunucu-istemci)

Parametre dönüştürme (client Server)

DBTYPE_DBDATE

DateTime

Tarihi

Tamam

Tamam

DBTYPE_DBTIMESTAMP

Saat alanları sıfır olarak ayarlayın.

IRowsetChangeSaat alanı sıfır ise, dize kesilmesi nedeniyle başarısız olur.

DBTYPE_DBTIME

Time(0)

Tamam

Tamam

DBTYPE_DBTIMESTAMP

Tarih alanları, geçerli tarih olarak ayarlamak.

IRowsetChangeKesirli saniye sıfır olmayan dize kesilmesi nedeniyle başarısız olur.

Tarih yoksayılır.

DBTYPE_DBTIME

Time(7)

Başarısız – geçersiz zaman değişmez.

Tamam

DBTYPE_DBTIMESTAMP

Başarısız – geçersiz zaman değişmez.

Tamam

DBTYPE_DBTIMESTAMP

Birdatetime2 (3)

Tamam

Tamam

DBTYPE_DBTIMESTAMP

Birdatetime2 (7)

Tamam

Tamam

DBTYPE_DBDATE

Smalldatetime

Tarihi

Tamam

Tamam

DBTYPE_DBTIMESTAMP

Saat alanları sıfır olarak ayarlayın.

IRowsetChangeSaat alanı sıfır ise, dize kesilmesi nedeniyle başarısız olur.

DBTYPE_DBTIME

Time(0)

Tamam

Tamam

DBTYPE_DBTIMESTAMP

Tarih alanları, geçerli tarih olarak ayarlamak.

IRowsetChangeKesirli saniye sıfır olmayan dize kesilmesi nedeniyle başarısız olur.

Tarih yoksayılır.

DBTYPE_DBTIMESTAMP

Birdatetime2 (0)

Tamam

Tamam

Eğer o amele ile Tamam anlamına SQL Server 2005, o ile çalışmaya devam SQL Server 2008(veya daha yenisi).

Yalnızca aşağıdaki ortak şema değişiklikleri kabul edilmiştir:

  • Yeni bir türü kullanarak burada mantıklı bir uygulama sadece bir tarih veya saat değeri gerektirir. Ancak, uygulamayı kullanmak zorunda kaldı datetimeya smalldatetimeçünkü ayrı Tarih ve saat türleri kullanılabilir değildi.

  • Ek Kesirli saniye duyarlık veya doğruluk kazanmak için yeni bir türü kullanıyor.

  • Geçiş için datetime2çünkü bu Tarih ve saat için tercih edilen veri türü.

Sunucu meta verilerini kullanan uygulamalar yoluyla elde ICommandWithParameters::GetParameterInfoya da şema satır kümeleri üzerinden parametre türü bilgilerini ayarlamak için ICommandWithParameters::SetParameterInfoburada bir kaynak türü dize gösterimini hedef türü dize gösterimini büyük müşteri dönüşüm sırasında başarısız olacak. Örneğin, bağlayıcı istemci dbtype_dbtımestamp kullanır ve sunucu sütun tarihi, SQL ServerNative Client "yyyy-dd-mm hh:mm:ss.fff" değerine dönüştürür ancak sunucu meta olarak döndürülen nvarchar(10). Sonuç taşma dbstatus_e_catconvertvalue neden olur. Benzer sorunlar ortaya çıkan veri dönüşüm ile IRowsetChange, satır kümesi meta veri resultset meta verileri ayarlandığından.

Parametre ve satır kümesi meta veri

Bu bölümde, bir sürümü ile derlenmiş istemcileri için meta veriler için parametreleri, sonuç sütun ve şema satır kümeleri açıklanmaktadır. SQL Serveryerel istemci daha erken SQL Server 2008.

ICommandWithParameters::GetParameterInfo

DBPARAMINFO yapısı ile aşağıdaki bilgileri verir prgParamInfoparametresi:

Parametre türü

wType

ulParamSize

bPrecision

bScale

tarihi

DBTYPE_WSTR

10

~0

~0

Saat

DBTYPE_WSTR

8, 10..16

~0

~0

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

datetime

DBTYPE_DBTIMESTAMP

16

23

3

datetime2

DBTYPE_WSTR

19,21..27

~0

~0

datetimeoffset

DBTYPE_WSTR

26,28..34

~0

~0

Bu değer aralıkları bazıları sürekli değildir dikkat edin; Örneğin, 9 8, 10..16 eksik. Bir ondalık için ek kesirli duyarlık sıfırdan büyük durumdur.

IColumnsRowset::GetColumnsRowset

Aşağıdaki sütunları döndürülen:

Sütun türü

DBCOLUMN_TYPE

DBCOLUMN_COLUMNSIZE

DBCOLUMN_PRECISION

DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION

tarihi

DBTYPE_WSTR

10

NULL

NULL

Saat

DBTYPE_WSTR

8, 10..16

NULL

NULL

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

datetime

DBTYPE_DBTIMESTAMP

16

23

3

datetime2

DBTYPE_WSTR

19,21..27

NULL

NULL

datetimeoffset

DBTYPE_WSTR

26,28..34

NULL

NULL

ColumnsInfo::GetColumnInfo

DBCOLUMNINFO yapısı aşağıdaki bilgileri verir:

Parametre türü

wType

ulColumnSize

bPrecision

bScale

tarihi

DBTYPE_WSTR

10

~0

~0

Time(1..7)

DBTYPE_WSTR

8, 10..16

~0

~0

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

datetime

DBTYPE_DBTIMESTAMP

16

23

3

datetime2

DBTYPE_WSTR

19,21..27

~0

~0

datetimeoffset

DBTYPE_WSTR

26,28..34

~0

~0

Şema satır kümeleri

Bu bölüm, meta veriler için parametreleri, sonuç sütun ve şema satır kümeleri için yeni veri türleri anlatılmaktadır. Bu bilgileri yararlı araçlar kullanılarak geliştirilmiş bir istemci sağlayıcısı olması daha önceki SQL Server 2008  SQL Serveryerel istemci.

SÜTUNSAY satır kümesi

Aşağıdaki sütun değerleri için Tarih ve saat türleri döndürülür:

Sütun türü

DATA_TYPE

CHARACTER_MAXIMUM_LENGTH

CHARACTER_OCTET_LENGTH

DATETIME_PRECISION

tarihi

DBTYPE_WSTR

10

20

NULL

Saat

DBTYPE_WSTR

8, 10..16

16,20..32

NULL

smalldatetime

DBTYPE_DBTIMESTAMP

NULL

NULL

0

datetime

DBTYPE_DBTIMESTAMP

NULL

NULL

3

datetime2

DBTYPE_WSTR

19,21..27

38,42..54

NULL

datetimeoffset

DBTYPE_WSTR

26,28..34

52, 56..68

NULL

procedure_parameters satır kümesi

Aşağıdaki sütun değerleri için Tarih ve saat türleri döndürülür:

Sütun türü

DATA_TYPE

CHARACTER_MAXIMUM_LENGTH

CHARACTER_OCTET_LENGTH

TYPE_NAME

LOCAL_TYPE_NAME

tarihi

DBTYPE_WSTR

10

20

tarihi

Saat

DBTYPE_WSTR

8, 10..16

16,20..32

Saat

smalldatetime

DBTYPE_DBTIMESTAMP

NULL

NULL

smalldatetime

datetime

DBTYPE_DBTIMESTAMP

NULL

NULL

datetime

datetime2

DBTYPE_WSTR

19,21..27

38,42..54

datetime2

datetimeoffset

DBTYPE_WSTR

26,28..34

52, 56..68

datetimeoffset

PROVIDER_TYPES satır kümesi

Aşağıdaki satırlar, Tarih ve saat türleri döndürülür:

Yazın->

Sütun

tarihi

Saat

smalldatetime

datetime

datetime2

datetimeoffset

TYPE_NAME

tarihi

Saat

smalldatetime

datetime

datetime2

datetimeoffset

DATA_TYPE

DBTYPE_WSTR

DBTYPE_WSTR

DBTYPE_DBTIMESTAMP

DBTYPE_DBTIMESTAMP

DBTYPE_WSTR

DBTYPE_WSTR

COLUMN_SIZE

10

16

16

23

27

34

LITERAL_PREFIX

LITERAL_SUFFIX

CREATE_PARAMS

NULL

NULL

NULL

NULL

NULL

NULL

IS_NULLABLE

VARIANT_TRUE

VARIANT_TRUE

VARIANT_TRUE

VARIANT_TRUE

VARIANT_TRUE

VARIANT_TRUE

BUYUKLUK_DUYARLİ

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

ARANABİLİR

DB_SEARCHABLE

DB_SEARCHABLE

DB_SEARCHABLE

DB_SEARCHABLE

DB_SEARCHABLE

DB_SEARCHABLE

UNSIGNED_ATTRIBUTE

NULL

NULL

NULL

NULL

NULL

NULL

FIXED_PREC_SCALE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

AUTO_UNIQUE_VALUE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

LOCAL_TYPE_NAME

tarihi

Saat

smalldatetime

datetime

datetime2

datetimeoffset

MINIMUM_SCALE

NULL

NULL

NULL

NULL

NULL

NULL

MAXIMUM_SCALE

NULL

NULL

NULL

NULL

NULL

NULL

GUID

NULL

NULL

NULL

NULL

NULL

NULL

TÜR KİTAPLIĞI

NULL

NULL

NULL

NULL

NULL

NULL

Sürüm

NULL

NULL

NULL

NULL

NULL

NULL

IS_LONG

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

BEST_MATCH

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_TRUE

VARIANT_FALSE

VARIANT_FALSE

IS_FIXEDLENGTH

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

Aşağı düzey Server davranışı

Daha önceki bir sürümünün sunucuya bağlandığında SQL Server 2008, herhangi bir girişimi yeni sunucu türü adları kullanmak (örneğin, ICommandWithParameters::SetParameterInfoya ITableDefinition::CreateTable) db_e_badtypename sonuçlanacak.

Yeni türleri için parametreleri bağlı olan veya sonuçları kullanmadan adı yazın ve yeni türü, sunucu türü örtülü olarak ya da orada hiçbir geçerli sunucu türü dönüştürme istemci türünü belirtmek için kullanılır, db_e_errorsoccurred döndürülür ve DBBINDSTATUS_UNSUPPORTED_CONVERSION Execute kullanılan Erişimci bağlama durumu ayarlanır.

Bir desteklenen istemci arabellek türü dönüştürme sunucu türü bağlantı sunucu sürümü için ise, tüm istemci arabellek türü kullanılabilir. Bu bağlamda sunucu türü tarafından belirtilen türde anlamına ICommandWithParameters::SetParameterInfo, veya arabellek türüne göre ise ICommandWithParameters::SetParameterInfodeğil çağırdı. Bu DBTYPE_DBTIME2 ve DBTYPE_DBTIMESTAMPOFFSET alt düzey sunuculara ile kullanılabilir anlamına gelir veya DataTypeCompatibility = 80, desteklenen sunucu türü istemci dönüştürme başarılı olursa. Sunucu türü doğru değilse, gerçek sunucu türü bir örtük dönüştürme yapamazsanız tabii ki, hata hala sunucu tarafından rapor.

SSPROP_INIT_DATATYPECOMPATIBILITY davranışı

SSPROP_INIT_DATATYPECOMPATIBILITY SSPROPVAL_DATATYPECOMPATIBILITY_SQL2000 için ayarlandığında, alt düzey istemciler için göründükleri gibi yeni tarih ve saat türleri ve ilişkili metadata istemcilere açıklandığı gibi görünür Gelişmiş tarih/saat türleri (ole db ve odbc) için toplu Kopyala değişiklikleri.

IRowsetFind karşılaştırılabilir

Onlar dize türleri görünür yerine, çünkü Tarih ve saat türleri tüm karşılaştırma işleçleri yeni tarih ve saat türleri için izin verilir.

Ayrıca bkz.

Kavramlar

Tarih/saat geliştirmeleri (ole db)