ITableDefinition 中的SQL Server Native Client数据类型映射

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

使用 ITableDefinition::CreateTable 函数创建表时,SQL Server Native Client OLE DB 访问接口使用者可以在传递的 DBCOLUMNDESC 数组的 pwszTypeName 成员中指定SQL Server数据类型。 如果使用者按照名称指定列的数据类型,则忽略由 DBCOLUMNDESC 结构的 wType 成员表示的 OLE DB 数据类型映射 。

使用 DBCOLUMNDESC 结构 wType 成员指定具有 OLE DB 数据类型的新列数据类型时,SQL Server Native Client OLE DB 访问接口映射 OLE DB 数据类型,如下所示。

OLE DB 数据类型 SQL Server

数据类型
其他信息
DBTYPE_BOOL bit
DBTYPE_BYTES binary、varbinary、image 或 varbinary(max) SQL Server Native Client OLE DB 访问接口检查 DBCOLUMNDESC 结构的 ulColumnSize 成员。 根据 SQL Server 实例的值和版本,SQL Server Native Client OLE DB 访问接口将类型映射到映像

如果 ulColumnSize 的值小于二进制数据类型列的最大长度,则SQL Server Native Client OLE DB 访问接口将检查 DBCOLUMNDESC rgPropertySets 成员。 如果DBPROP_COL_FIXEDLENGTH VARIANT_TRUE,SQL Server Native Client OLE DB 访问接口会将类型映射到二进制。 如果 属性的值为 VARIANT_FALSE,则SQL Server Native Client OLE DB 访问接口会将类型映射到 varbinary。 在这两种情况下,DBCOLUMNDESC 的 ulColumnSize 成员将确定创建的 SQL Server 列的宽度 。
DBTYPE_CY money
DBTYPE_DBTIMESTAMP datetime
DBTYPE_GUID uniqueidentifier
DBTYPE_I2 smallint
DBTYPE_I4 int
DBTYPE_NUMERIC numeric SQL Server Native Client OLE DB 访问接口检查 DBCOLUMDESC bPrecisionbScale 成员,以确定数值列的精度和小数位数。
DBTYPE_R4 real
DBTYPE_R8 float
DBTYPE_STR char、varchar、text 或 varchar(max) SQL Server Native Client OLE DB 访问接口检查 DBCOLUMNDESC 结构的 ulColumnSize 成员。 根据 SQL Server 实例的值和版本,SQL Server Native Client OLE DB 访问接口将类型映射到文本

如果 ulColumnSize 的值小于多字节字符数据类型列的最大长度,则SQL Server Native Client OLE DB 访问接口将检查 DBCOLUMNDESC rgPropertySets 成员。 如果VARIANT_TRUE DBPROP_COL_FIXEDLENGTH,SQL Server Native Client OLE DB 访问接口会将类型映射到 char。 如果该属性的值VARIANT_FALSE,则SQL Server Native Client OLE DB 访问接口会将类型映射到 varchar。 在这两种情况下,DBCOLUMNDESC ulColumnSize 成员将确定创建的 SQL Server 列的宽度。
DBTYPE_UDT UDT 需要 UDT 列时,ITableDefinition::CreateTable 将在 DBCOLUMNDESC 结构中用到以下信息 :

pwSzTypeName 将被忽略。

rgPropertySets 必须包括 DBPROPSET_SQLSERVERCOLUMN 属性集,如使用用户定义的类型中的 DBPROPSET_SQLSERVERCOLUMN 部分所述。
DBTYPE_UI1 tinyint
DBTYPE_WSTR nchar、nvarchar、ntext 或 nvarchar(max) SQL Server Native Client OLE DB 访问接口检查 DBCOLUMNDESC 结构的 ulColumnSize 成员。 根据值,SQL Server Native Client OLE DB 访问接口将类型映射到 ntext

如果 ulColumnSize 的值小于 Unicode 字符数据类型列的最大长度,则SQL Server Native Client OLE DB 访问接口将检查 DBCOLUMNDESC rgPropertySets 成员。 如果VARIANT_TRUE DBPROP_COL_FIXEDLENGTH,SQL Server Native Client OLE DB 访问接口会将类型映射到 nchar。 如果该属性的值VARIANT_FALSE,则SQL Server Native Client OLE DB 访问接口会将类型映射到 nvarchar。 在这两种情况下,DBCOLUMNDESC ulColumnSize 成员将确定创建的 SQL Server 列的宽度。
DBTYPE_XML XML

注意

创建新表时,SQL Server Native Client OLE DB 访问接口仅映射上表中指定的 OLE DB 数据类型枚举值。 尝试创建其中某一列为任何其他 OLE DB 数据类型的表时将生成错误。

另请参阅

数据类型 (OLE DB)