Veri türü eşleştirme ile dağıtılmış sorgular
Bir OLE DB sağlayıcı, veri OLE DB türü tanıtıcıları DBTYPEs adı verilen veri türlerini gösterir.Veri türleri, OLE DB veri türleri arasında dönüştürülür ve SQL Server veri eşleme tarafından sistem veri türleri:
OLE DB veri türlerinden için SQL Server Sistem veri türleri. Bu dönüştürme oluşur, SQL Server OLE DB veri verileri okur kaynak, SELECT ifadelerine veya UPDATE, INSERT veya DELETE deyimleri, okuma tarafı.
Kimden SQL Server Sistem veri türleri için OLE DB veri türleri. Bu dönüştürme oluşur, SQL Server çoğunlukla INSERT veya UPDATE deyimi, değiştirilmiş bir tabloyu bir uzak tablo olduğu OLE DB veri kaynağı içine, verileri yazar.
SQL Server için OLE DB Sağlayıcı'dan veri türü eşleştirme
Veri eşleme için OLE DB sağlayıcı türü SQL Server izin verilen karşılaştırmalar, ifadeler ve uzak veri içeren geçerli açık dönüştürme tanımlar. Eşlemeyi gösterilen tablo, izler.
Ifadelerde bir uzak tablo sütun türü geçerliliği aşağıdaki kuralla özetlenebilir: Uzak sütun değeri bir Transact-SQL'DE geçerlidir ifade ilgili eşleştirilmiş, SQL Server Veri türü eşleştirme tablosuna veri türünü, aynı bağlamda geçerlidir.
Örneğin, ifade göz önünde bulundurun: local_column OPERATOR remote_column. Bu ifade , bir yerel tabloya sütun ve local_column ise remote_column bir uzak tablo sütundur.Deyimin geçerli olup olmadığını İŞLETMEN veri türü olan ve yerel sütunun veri türü için geçerli bir işleç olan DBTYPEremote_column eşleştirir.
Benzer şekilde, (CASTremote_column OLARAK data_type_1) izin verilir, DBTYPE remote_column için eşleştirir.SQL Server Sistem veri türü data_type_2 ve açık dönüştürme data_type_2 Kime data_type_1 izin verilir. Bir sütun, veri türü sağlayıcı tarafındaki DBTYPE_DATE dönüştürülebilir bir datetime sütun SQL Server. Ancak, DBTYPE_DATE verileri doğrudan dönüştürülemez varchar.
Aşağıdaki tablo, veri türü eşleştirme tablosunu gösterir.DBTYPE göstergesi ve sütun DBCOLUMNFLAGS değerini kullanarak ilgili bulabilirsiniz SQL Server Veri Türü.
dbtype |
dbcolumnflags |
SQL Server veri türü |
---|---|---|
dbtype_i1 |
numeric(3, 0)1 |
|
DBTYPE_İ2 |
smallint |
|
DBTYPE_İ4 |
int |
|
DBTYPE_İ8 |
bigint |
|
dbtype_ui1 |
tinyint |
|
dbtype_ui1 |
numeric(5,0) |
|
dbtype_ui1 |
numeric(10,0) |
|
dbtype_ui1 |
numeric(20,0) |
|
DBTYPE_R4 |
float |
|
DBTYPE_R8 |
real |
|
dbtype_numeric |
numeric |
|
dbtype_decimal |
decimal |
|
dbtype_cy |
money |
|
dbtype_bstr |
DBCOLUMNFLAGS_ISLONG = true |
ntext |
dbtype_bstr |
DBCOLUMNFLAGS_ISFIXEDLENGTH = true |
nchar |
dbtype_bstr |
DBCOLUMNFLAGS_ISFIXEDLENGTH = false |
nvarchar |
dbtype_idispatch |
Hata |
|
dbtype_error |
Hata |
|
dbtype_bool |
bit |
|
dbtype_variant |
nvarchar(4000) |
|
dbtype_iunknown |
Hata |
|
dbtype_guid |
uniqueidentifier |
|
dbtype_bytes |
DBCOLUMNFLAGS_ISLONG = doğru ya da en çok sütun boyutu > 8.000 bayt. |
image |
dbtype_bytes |
DBCOLUMNFLAGS_ISLONG = true ve sütun boyutu sınırsız uzunluğudur. |
varbinary(max) |
dbtype_bytes |
DBCOLUMNFLAGS_ISROWVER = true, DBCOLUMNFLAGS_ISFIXEDLENGTH = true ve sütun boyutu = 8 |
timestamp |
dbtype_bytes |
DBCOLUMNFLAGS_ISFIXEDLENGTH = true |
binary |
dbtype_bytes |
DBCOLUMNFLAGS_ISFIXEDLENGTH = false |
varbinary |
dbtype_str |
DBCOLUMNFLAGS_ISFIXEDLENGTH = true |
char |
dbtype_ str |
DBCOLUMNFLAGS_ISFIXEDLENGTH = false |
varchar |
dbtype_str |
DBCOLUMNFLAGS_ISLONG = doğru ya da en çok sütun boyutu > 8.000 karakter. |
text |
dbtype_str |
DBCOLUMNFLAGS_ISLONG = true ve sütun boyutu sınırsız uzunluğudur. |
varchar(max) |
dbtype_wstr |
dbcolumnflags_isfixed |
nchar |
dbtype_wstr |
DBCOLUMNFLAGS_ISFIXEDLENGTH = false |
nvarchar |
dbtype_wstr |
DBCOLUMNFLAGS_ISLONG = doğru ya da en çok sütun boyutu > 4.000 karakter. |
ntext |
dbtype_wstr |
DBCOLUMNFLAGS_ISLONG = true ve sütun boyutu sınırsız uzunluğudur. |
nvarchar(max) |
dbtype_udt |
Eşdeğeri SQL Server Kullanıcı tanımlı tür, kayıtlı. |
|
dbtype_date |
date, datetime, datetime2, datetimeoffset |
|
dbtype_dbdate |
date, datetime, datetime2, datetimeoffset (Uyumluluk düzey 9. 0'dan daha az olur.) |
|
dbtype_dbtime |
time, datetime, datetime2, datetimeoffset |
|
dbtype_dbtime_ex |
time, datetime2, datetimeoffset |
dbtype_dbtimestamp |
time, date, datetime2, datetimeoffset, datetime |
|
---|---|---|
dbtype_dbtimestamp |
time, date, datetime2, datetimeoffset |
|
dbtype_dbtimestamp |
time, date, datetime2, datetimeoffset |
|
dbtype_array |
Hata |
|
dbtype_byref |
Yoksayıldı |
|
dbtype_vector |
Hata |
|
dbtype_reserved |
Hata |
|
dbtype_xml |
xml (Yalnızca doğrudan sorgulara izin verilir.) |
1numeric(p,s) indicates the SQL Server data type numeric with precision p and scale s.
Not
Veriler için dönüştürülmesi gerekiyorsa bir SQL Server veri türü, CONVERT veya CAST işlevini kullanarak açık dönüştürme, gösterilen varsayılandan farklı bu güvenlik açığından gereklidir. Daha fazla bilgi için bkz:CAST ve CONVERT (Transact-SQL).
SÜTUNSAY şema satır kümesi sağlayıcı aracılığıyla da geldiği bilgi DBTYPE göstergesi ve DBCOLUMNFLAGS değeri veya ile IColumnsInfo arabirim.SÜTUNSAY şema satır kümesi için DATA_TYPE ve COLUMN_FLAGS sütunları DBTYPE ve DBCOLUMNFLAGS değerleri gösterir.Için IColumnsInfo::GetColumnInfo arabirimwType ve dwFlags DBCOLUMNINFO yapı üyeleri bu değerleri gösterir.
SQL Server OLE DB sağlayıcı, veri türü eşleştirme
SQL Server önceki içinde gösterilen eşlemesi kullanarak, sistem veri türleri için OLE DB türleri eşleştirin tablo.Bir eşleme bir SQL Server TYPE S1 bir özel OLE DB'ye yazınt izin verilir, bu koşullardan biri doğruysa:
Veri türü eşlemesindeki karşılık gelen eşleme bulunan tablo.
Bir izin verilen örtülü veri türü dönüştürme yok S1 başka bir SQL Server Veri Türü % S2 ve bir eşleme% S2 to t veri türü eşleştirme tablosunda tanımlanır.
SQL Server 2008 tarih ve saat ve tarih, eşleme, uzak bir sunucudan alınan
Aşağıdaki gösterildiği tablo date ve time veri türü eşleştirme için OLE DB veri kaynağından gönderilen verilerde bir örnek, SQL Server 2008. Bu dönüştürme oluşur, SQL Server 2008 OLE DB veri verileri okur kaynak, SELECT ifadelerine veya UPDATE, INSERT veya DELETE deyimleri, okuma tarafı. Uzak bir sütun ise bir date, time, dateime2, veya datetimeoffset veri türü, veritabanı uyumluluk düzey, 100 veya daha yüksek ise, bir tür döndürdü. Uyumluluk düzeyini daha düşük olduğunda SQL Server 2008 bir örtülü dönüştürmeye yapar. datetime.
OLE DB türü |
Uzak sunucu, SQL Server 2008 return: |
Uzak sunucu, SQL Server 2005 veya SQL Server 2000 iade ise: |
Uzak sunucu, SQL Server değil ise yerel SQL Server 2008 veritabanı uyumluluk düzey 90 iade edilir: |
Uzak sunucu, SQL Server değil ise yerel SQL Server 2008 veritabanı uyumluluk düzey 100 iade edilir: |
---|---|---|---|---|
DwFlags olmaksızın DBTYPE_DBTIMESTAMP küme DBPARAMFLAGS_SS_ISVARIABLESCALE olarak |
datetime (uzak bir sütun ya da olabilir datetime veya smalldatetime) |
datetime (uzak bir sütun ya da olabilir datetime veya smalldatetime) |
datetime |
datetime2(7) |
DwFlags olan ile DBTYPE_DBTIMESTAMP küme DBPARAMFLAGS_SS_ISVARIABLESCALE olarak |
datetime2 |
Geçerli değil |
Geçerli değil |
Geçerli değil |
dbtype_dbdate |
date |
Geçerli değil |
datetime |
date |
dbtype_dbtime |
time(0) |
Geçerli değil |
datetime |
time(0) |
DBTYPE_DBTİME2 |
time(n) |
Geçerli değil |
Geçerli değil |
Geçerli değil |
dbtype_dbtimestampoffset |
datetimeoffset |
Geçerli değil |
Geçerli değil |
Geçerli değil |
SQL Server 2008 eşleme tarih ve saat ve tarih, bir uzak sunucusuna gönderildi.
Aşağıdaki gösterildiği tablo date ve time veri eşleme bir örneğinden gönderilen veri türü SQL Server 2008 OLE DB veri hedef. Bu dönüştürme oluşur, SQL Server 2008 çoğunlukla INSERT veya UPDATE deyimi, değiştirilmiş bir tabloyu bir uzak tablo olduğu OLE DB veri kaynağı içine, verileri yazar.
SQL Server 2008 veri türü |
Uzak sunucu, SQL Server 2008 ile bağlama: |
Uzak sunucu, SQL Server 2005 veya SQL Server 2000 bağlama ile ise: |
Uzak sunucu ile SQL Server bağlaması değilse: |
---|---|---|---|
datetime, smalldatetime |
DwFlags olmaksızın DBTYPE_DBTIMESTAMP küme DBPARAMFLAGS_SS_ISVARIABLESCALE olarak |
DwFlags olmaksızın DBTYPE_DBTIMESTAMP küme DBPARAMFLAGS_SS_ISVARIABLESCALE olarak |
DwFlags olmaksızın DBTYPE_DBTIMESTAMP küme DBPARAMFLAGS_SS_ISVARIABLESCALE olarak |
datetime2(n) |
DwFlags olan ile DBTYPE_DBTIMESTAMP küme DBPARAMFLAGS_SS_ISVARIABLESCALE olarak |
DwFlags olmaksızın DBTYPE_DBTIMESTAMP küme DBPARAMFLAGS_SS_ISVARIABLESCALE olarak |
DwFlags olmaksızın DBTYPE_DBTIMESTAMP küme DBPARAMFLAGS_SS_ISVARIABLESCALE olarak |
date |
dbtype_dbdate |
dbtype_dbdate |
dbtype_dbdate |
time(0) |
dbtype_dbtime |
dbtype_dbtime |
dbtype_dbtime |
time(n) (0 < n <= 7) |
DBTYPE_DBTIMESTAMP (ile bekleyen tarih bölümü) DBPARAMFLAGS_SS_ISVARIABLESCALE ayarlanan dwFlags ile |
DwFlags olmaksızın DBTYPE_DBTIMESTAMP küme DBPARAMFLAGS_SS_ISVARIABLESCALE olarak |
DBTYPE_DBTIMESTAMP (ile bekleyen tarih bölümü) |
datetimeoffset |
dbtype_dbtimestampoffset |
Geçerli değil |
Geçerli değil |
SQL Server 2008 uzaktan sorgu yürütme tarih ve saat veri türleri
SQL Server 2008 sahip uzak nesne başvurusu bir sorgu yürütür time, date, datetime2, veya datetimoffset yerel veya uzaktaki sunucu veri türleri. Kararınızı, sürüm ya da uzak sunucu başvuru türü ve sağlayıcı bağlıdır.Kabul başvuru uzak bir sütun ya da sabit, değişken veya yerel bir sütun türleridir.
Olmayan SQL Server sağlayıcıları
Desteği için kısmi değil time, date, ve datetime2 veri türleri, benzer türleri için bir uzak sunucuda bulunduğunda olmayan-SQL Server sağlayıcıları. Bu sağlayıcılar bu türleri için destek bildirmek için bir yol yoktur.
Aşağıdaki tablo, sorgu uzak veya yerel sunucu üzerinde yürütülen gösterir.Ilk sütun, yerel sunucu üzerinde veri türünü gösterir.Ilgili OLE DB veri türü, ikinci sütun gösterir yerel örnek SQL Server 2008 Uzak sunucu için kullanır. Son üç sütun, sorgu uzak veya yerel sunucu üzerinde yürütülen gösterir.Yürütme konumu, sürüm ya da uzak sunucu türüne bağlıdır.
Yerel sunucu veri türü |
Uzak sunucu tarafından yerel SQL Server 2008'de kullanılan bir OLE DB veri türü |
SQL Server 2008 veya sonraki sürüm uzak sunucu |
SQL Server 2005 uzak sunucu |
Uzak sunucu olmayan MSSQL |
---|---|---|---|---|
datetime |
dbtype_dbtimestamp |
Uzak |
Uzak |
Uzak |
smalldatetime |
dbtype_dbtimestamp |
Uzak |
Uzak |
Uzak |
datetime2 |
dbtype_dbtimestamp |
Uzak |
Yerel |
Uzak |
datetimeoffset |
dbtype_dbtimestampoffset |
Uzak |
Yerel |
Yerel |
date |
dbtype_dbdate |
Uzak |
Yerel |
Uzak |
time(>0) |
DBTYPE_DBTİME2 |
Uzak |
Yerel |
Yerel |
time(0) |
DBTYPE_DBTİME2 |
Uzak |
Yerel |
Uzak |
See Also