连接服务器 分布式查询不支持 xml 数据类型,分布式查询的数据类型映射

从 OLE DB 访问接口到 SQL Server 的数据类型映射

从 OLE DB 访问接口映射到 SQL Server 的数据类型定义了允许的比较和表达式以及调用远程数据的有效显式转换。下表显示了该映射。

可以按下列规则概括表达式中远程表列的类型有效性:在相同的上下文中,如果数据类型映射表中对应的映射 SQL Server 数据类型有效,则 Transact-SQL 表达式中的远程列值有效。

例如表达式:local_columnOPERATOR remote_column。在此表达式中,local_column 是本地表列,remote_column 是远程表列。如果 OPERATOR 是本地列数据类型的有效运算符,也是 remote_column 的 DBTYPE 映射到的数据类型的有效运算符,则此表达式有效。

同样,如果 remote_column 的 DBTYPE 映射到 SQL Server 系统数据类型 data_type_2,并且允许从 data_type_2 显式转换到 data_type_1,则允许 CAST(remote_column AS data_type_1)。例如,可以将访问接口端的 DBTYPE_DATE 数据类型列转换为 SQL Server 中的 datetime 列。但是,不能将 DBTYPE_DATE 数据直接转换为 varchar。

下表为数据类型映射表。通过使用 DBTYPE 指示器及其列 DBCOLUMNFLAGS 值,可以查找相应的 SQL Server 数据类型。

DBTYPE

DBCOLUMNFLAGS

SQL Server 数据类型

DBTYPE_I1

numeric(3, 0)1

DBTYPE_I2

smallint

DBTYPE_I4

int

DBTYPE_I8

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

Error

DBTYPE_ERROR

Error

DBTYPE_BOOL

bit

DBTYPE_VARIANT

nvarchar(4000)

DBTYPE_IUNKNOWN

Error

DBTYPE_GUID

uniqueidentifier

DBTYPE_BYTES

DBCOLUMNFLAGS_ISLONG = true,或最大列大小 > 8000 字节。

image

DBTYPE_BYTES

DBCOLUMNFLAGS_ISLONG = True,并且对列的大小无长度限制。

varbinary(max)

DBTYPE_BYTES

DBCOLUMNFLAGS_ISROWVER = true,DBCOLUMNFLAGS_ISFIXEDLENGTH = true,且列大小 = 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 = True,或列的最大大小超过 8,000 个字符。

text

DBTYPE_STR

DBCOLUMNFLAGS_ISLONG = True,并且对列的大小无长度限制。

varchar(max)

DBTYPE_WSTR

DBCOLUMNFLAGS_ISFIXED

nchar

DBTYPE_WSTR

DBCOLUMNFLAGS_ISFIXEDLENGTH = false

nvarchar

DBTYPE_WSTR

DBCOLUMNFLAGS_ISLONG = True,或列的最大大小超过 4,000 个字符。

ntext

DBTYPE_WSTR

DBCOLUMNFLAGS_ISLONG = True,并且对列的大小无长度限制。

nvarchar(max)

DBTYPE_UDT

相同的 SQL Server 用户定义类型(如果已注册了一个)。

DBTYPE_DATE

date, datetime, datetime2, datetimeoffset

DBTYPE_DBDATE

date, datetime, datetime2, datetimeoffset (兼容级别低于 9.0。)

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

Error

DBTYPE_BYREF

忽略

DBTYPE_VECTOR

Error

DBTYPE_RESERVED

Error

DBTYPE_XML

xml(只允许在传递查询中使用。)

1numeric(p,s) 指示 SQL Server 数据类型 numeric 的精度为 p,小数位数为 s。

7a8e5ba8eda14c77744720b6189946fc.gif注意

如果必须将数据转换为不同于显示的默认值的 SQL Server 数据类型,则需要进行显式转换(使用 CAST 或 CONVERT 函数)。有关详细信息,请参阅 CAST 和 CONVERT (Transact-SQL)。

DBTYPE 指示器和 DBCOLUMNFLAGS 值信息通过 COLUMNS 架构行集或通过 IColumnsInfo 接口从访问接口获得。对于 COLUMNS 架构行集,DATA_TYPE 和 COLUMN_FLAGS 列表示 DBTYPE 和 DBCOLUMNFLAGS 值。对于 IColumnsInfo::GetColumnInfo 接口,DBCOLUMNINFO 结构的 wType 和 dwFlags 成员表示这些值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值