Ö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.