适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
Analytics Platform System (PDW)
当使用 ITableDefinition::CreateTable 函数创建表时,适用于 SQL Server 的 OLE DB 驱动程序使用者可以在向其传递的 DBCOLUMNDESC 数组的 pwszTypeName 成员中指定 SQL Server 数据类型。 如果使用者按照名称指定列的数据类型,则忽略由 DBCOLUMNDESC 结构的 wType 成员表示的 OLE DB 数据类型映射 。
当使用 DBCOLUMNDESC 结构的 wType 成员指定具有 OLE DB 数据类型的新列数据类型时,适用于 SQL Server 的 OLE DB 驱动程序将按以下方式映射 OLE DB 数据类型 。
OLE DB 数据类型 | SQL Server 数据类型 |
其他信息 |
---|---|---|
DBTYPE_BOOL | bit | |
DBTYPE_BYTES | binary、varbinary、image 或 varbinary(max) | OLE DB Driver for SQL Server 将检查 DBCOLUMNDESC 结构的 ulColumnSize 成员。 根据该值和 SQL Server 实例的版本,OLE DB Driver for SQL Server 将该类型映射为 image 。 如果 ulColumnSize 的值小于 binary 数据类型列的最大长度,则适用于 SQL Server 的 OLE DB 驱动程序将检查 DBCOLUMNDESC 的 rgPropertySets 成员 。 如果 DBPROP_COL_FIXEDLENGTH 为 VARIANT_TRUE,则 OLE DB Driver for SQL Server 将该类型映射为 binary 。 如果属性值为 VARIANT_FALSE,则 OLE DB Driver for SQL Server 将该类型映射为 varbinary 。 在这两种情况下,DBCOLUMNDESC 的 ulColumnSize 成员将确定创建的 SQL Server 列的宽度 。 |
DBTYPE_CY | money | |
DBTYPE_DBTIMESTAMP | datetime2 | |
DBTYPE_GUID | uniqueidentifier | |
DBTYPE_I2 | smallint | |
DBTYPE_I4 | int | |
DBTYPE_I8 | bigint | |
DBTYPE_NUMERIC | numeric | 适用于 SQL Server 的 OLE DB 驱动程序检查 DBCOLUMDESC 的 bPrecision 和 bScale 成员以确定 numeric 列的精度和小数位数 。 |
DBTYPE_R4 | real | |
DBTYPE_R8 | float | |
DBTYPE_STR | char、varchar、text 或 varchar(max) | OLE DB Driver for SQL Server 将检查 DBCOLUMNDESC 结构的 ulColumnSize 成员。 根据该值和 SQL Server 实例的版本,OLE DB Driver for SQL Server 将该类型映射为 text 。 如果 ulColumnSize 的值小于 multibyte 数据类型列的最大长度,则适用于 SQL Server 的 OLE DB 驱动程序将检查 DBCOLUMNDESC 的 rgPropertySets 成员 。 如果 DBPROP_COL_FIXEDLENGTH 为 VARIANT_TRUE,则 OLE DB Driver for SQL Server 将该类型映射为 char 。 如果属性值为 VARIANT_FALSE,则 OLE DB Driver for SQL Server 将该类型映射为 varchar 。 在这两种情况下,DBCOLUMNDESC ulColumnSize 成员将确定创建的 SQL Server 列的宽度。 |
DBTYPE_UDT | UDT | 需要 UDT 列时,ITableDefinition::CreateTable 将在 DBCOLUMNDESC 结构中用到以下信息 : pwSzTypeName 将被忽略。 rgPropertySets 必须包括 DBPROPSET_SQLSERVERCOLUMN 属性集,如使用用户定义的类型中的 DBPROPSET_SQLSERVERCOLUMN 部分所述。 |
DBTYPE_UI1 | tinyint | |
DBTYPE_VARIANT | sql_variant | |
DBTYPE_WSTR | nchar、nvarchar、ntext 或 nvarchar(max) | OLE DB Driver for SQL Server 将检查 DBCOLUMNDESC 结构的 ulColumnSize 成员。 根据该值,OLE DB Driver for SQL Server 将该类型映射为 ntext 。 如果 ulColumnSize 的值小于 Unicode 数据类型列的最大长度,则适用于 SQL Server 的 OLE DB 驱动程序将检查 DBCOLUMNDESC 的 rgPropertySets 成员 。 如果 DBPROP_COL_FIXEDLENGTH 为 VARIANT_TRUE,则 OLE DB Driver for SQL Server 将该类型映射为 nchar 。 如果属性值为 VARIANT_FALSE,则 OLE DB Driver for SQL Server 将该类型映射为 nvarchar 。 在这两种情况下,DBCOLUMNDESC ulColumnSize 成员将确定创建的 SQL Server 列的宽度。 |
DBTYPE_XML | XML |
注意
创建新表时,适用于 SQL Server 的 OLE DB 驱动程序只映射前一个表中指定的 OLE DB 数据类型枚举值。 尝试创建其中某一列为任何其他 OLE DB 数据类型的表时将生成错误。