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.