Aracılığıyla paylaş


Önceki SQL Server sürümler (ole db) ile yeni tarih/saat özellikleri

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 bir sürüm ile derlenmiş bir istemci 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 kullanan istemci uygulamaları SQL Server Native Client daha önceki SQL Server 2008 Yeni tarih/saat türleri olarak görmek nvarchar sütunlar.Sütun içeriği değişmez temsili olan.Daha fazla bilgi için bkz: "veri formatları: Dizeler ve rakamları" kısmında ole db tarih/saat geliştirmeleri için veri türü desteği. Belirtilen sütun. için duyarlılı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üzeyde veri istemciye döndürülen kodu yazın (örneğin, nvarchar) ve ilişkili 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ı.

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:

ole db istemci türü

sql Server 2005 türü

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

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

Parametre dönüştürme (istemci sunucu için)

DBTYPE_DBDATE

Tarih saat

Date

Tamam

Tamam

DBTYPE_DBTIMESTAMP

Saat alanları küme sıfır.

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

DBTYPE_DBTIME

Time(0)

Tamam

Tamam

DBTYPE_DBTIMESTAMP

Tarih alanları küme için geçerli tarih.

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 saat değişmez.

Tamam

DBTYPE_DBTIMESTAMP

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

Tamam

DBTYPE_DBTIMESTAMP

Datetime2(3)

Tamam

Tamam

DBTYPE_DBTIMESTAMP

Datetime2(7)

Tamam

Tamam

DBTYPE_DBDATE

Smalldatetime

Date

Tamam

Tamam

DBTYPE_DBTIMESTAMP

Saat alanları küme sıfır.

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

DBTYPE_DBTIME

Time(0)

Tamam

Tamam

DBTYPE_DBTIMESTAMP

Tarih alanları küme için geçerli tarih.

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

Tarih yoksayılır.

DBTYPE_DBTIMESTAMP

Datetime2(0)

Tamam

Tamam

Tamam anlamına gelir, ile yaradıysa SQL Server 2005, onu devam etmelidir çalışmak SQL Server 2008 (veya üstü).

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

  • Burada mantıksal olarak bir uygulama yalnızca bir tarih veya saat değeri gerektiren yeni bir türü kullanıyor.Ancak, uygulamayı kullanmak için zorlandı datetime veya smalldatetime çünkü ayrı tarih ve saat türleri kullanılabilir değildi.

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

  • Yapma datetime2 çünkü bu tercih edilen veri türü için tarih ve saat.

Sunucu meta veriler kullanan uygulamalar elde aracılığıyla ICommandWithParameters::GetParameterInfo veya şema satırkümes küme üzerinden parametre türü bilgisi ICommandWithParameters::SetParameterInfo kaynak türü dize halinde temsilini dize halinde temsilini daha büyük olduğu istemci dönüştürme sırasında başarısız olurhedef türü. Örneğin, bağlama DBTYPE_DBTIMESTAMP istemcinin sunucu sütun tarih, olursa SQL Server Native istemci tarafından "gg-yyyy-aa hh:mm:ss.fff" değerine dönüştürülür, ancak sunucu meta veriler iade olarak nvarchar(10).Sonuçta ortaya çıkan taşma dbstatus_e_catconvertvalue neden olur.Benzer sorunlar ortaya çıkan veri dönüşümleri ile birlikte IRowsetChange, çünkü satır küme meta veriler kümesinden sonuç küme meta veriler.

Parametre ve satır kümesi meta veri

Bu bölüm ile derlenmiş istemcileri için meta veriler için parametreleri, sonucu sütunlara ve şema satır kümeleri açıklar bir sürüm , SQL Server Native Client daha önceki SQL Server 2008.

ICommandWithParameters::GetParameterInfo

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

Parametre türü

wType

ulParamSize

bPrecision

bScale

tarih

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

Bazıları bu değer aralıkları sürekli değil, dikkat edin; Örneğin, 9, 8, 10..16 eksik.Kesirli duyarlığını sıfırdan büyük olan bir ondalık noktası ekleme 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

tarih

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

tarih

DBTYPE_WSTR

10

~0

~0

saat(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

Parametreler, sonucu sütunlara ve yeni veri türleri için şema satır kümeleri için meta veriler bu bölümde anlatılmaktadır.This information is useful is you have a client provider developed using tools earlier than SQL Server 2008 SQL Server Native Client.

SÜTUN satır kümesi

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

Sütun türü

DATA_TYPE

CHARACTER_MAXIMUM_LENGTH

CHARACTER_OCTET_LENGTH

DATETIME_PRECISION

tarih

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/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

tarih

DBTYPE_WSTR

10

20

tarih

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 için tarih/saat türleri döndürülür:

Type->

Column

tarih

saat

smalldatetime

datetime

datetime2

datetimeoffset

TYPE_NAME

tarih

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

ÜZERİNE YAZILMASINA

ÜZERİNE YAZILMASINA

ÜZERİNE YAZILMASINA

ÜZERİNE YAZILMASINA

ÜZERİNE YAZILMASINA

ÜZERİNE YAZILMASINA

CASE_SENSITIVE

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

tarih

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

ÜZERİNE YAZILMASINA

VARIANT_FALSE

VARIANT_FALSE

IS_FIXEDLENGTH

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

VARIANT_FALSE

Alt düzey Server davranışı

Daha önceki bir sürüm, bir sunucuya bağlandığında SQL Server 2008, yapmaya yeni sunucu türü adları kullanmak (örneğin, ICommandWithParameters::SetParameterInfo veya ITableDefinition::CreateTable) db_e_badtypename. neden olacak

Yeni türler parametre veya sonuçlar için ilişkili sunucu türü örtülü olarak belirtmek için kullanılan bir tür adı ve ya da kullanmadan yeni türü veya sunucusu türünden geçerli dönüştürülmesi için istemci türüdb_e_errorsoccurred döndürülür ve DBBINDSTATUS_UNSUPPORTED_CONVERSION olan küme olarak yürütme sırasında kullanılan erişimci bağlama durumu.

Ara bellek türü dönüştürme desteklenen istemci bağlantı sunucu sürüm için sunucu türü için ise, tüm istemci arabellek türü kullanılır.Bu bağlamda, sunucu türü tarafından belirtilen tür anlamına gelir ICommandWithParameters::SetParameterInfo, arabellek türüne göre örtülü veya açık ICommandWithParameters::SetParameterInfo değil çağırdı.Bu DBTYPE_DBTIME2 ve DBTYPE_DBTIMESTAMPOFFSET ile kullanılabilir olduğunu anlamına gelir kapalı-düzey sunucular, veya ne zaman DataTypeCompatibility = 80, istemci dönüştürme desteklenen sunucu türü için başarılı değilse.Sunucu türü doğru değilse, gerçek sunucu türü için bir kapalı dönüştürme gerçekleştirememeniz durumunda tabii ki hata hala sunucu tarafından rapor.

SSPROP_INIT_DATATYPECOMPATIBILITY davranışı

SSPROP_INIT_DATATYPECOMPATIBILITY olduğunda küme alt düzey istemciler için göründükleri gibi SSPROPVAL_DATATYPECOMPATIBILITY_SQL2000 için yeni tarih/saat türleri ve ilişkili meta veriler 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 için comparability

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

Ayrıca bkz.

Kavramlar