主机文件系统的通用架构集合

通用架构集合是由主机文件的托管提供程序实现的架构集合。 可以通过查询托管提供程序来确定支持的架构集合列表,具体方法为调用没有参数或包含架构集合名称“MetaDataCollections”的 GetSchema 方法。 这样将返回一个 DataTable 对象,其中包含支持的架构集合列表、每个架构集合支持的限制数以及它们使用的标识符部分数。

下表描述了主机文件系统的通用架构集合。

“列”

列名 数据类型 说明
table_catalog 字符串 表的编录。
table_schema 字符串 包含表的架构。
table_name 字符串 表名。
column_name 字符串 列名称。
ordinal_position Int16 列标识号。
column_default 字符串 列的默认值。
is_nullable 字符串 列的为空性。 如果此列允许 NULL,此列将返回 YES。 否则,返回 No。
data_type 字符串 系统提供的数据类型。
character_maximum_length Int32 – Sql8、Int16 – Sql7 二进制数据、字符数据或文本和图像数据的最大长度(字符)。 否则,返回 NULL。
character_octet_length Int32 – SQL8、Int16 – Sql7 二进制数据、字符数据或文本和图像数据的最大长度(字节)。 否则,返回 NULL。
numeric_precision Unsigned Byte 近似数字数据、精确数字数据、整数数据或货币数据的精度。 否则,返回 NULL。
numeric_precision_radix Int16 近似数字数据、精确数字数据、整数数据或货币数据的精度基数。 否则,返回 NULL。
numeric_scale Int32 近似数字数据、精确数字数据、整数数据或货币数据的小数位数。 否则,返回 NULL。
datetime_precision Int16 datetime 及 SQL-92 interval 数据类型的子类型代码。 对于其他数据类型,返回 NULL。
character_set_catalog 字符串 如果列为字符数据或文本数据类型,则返回 master,指示字符集所处的数据库。 否则,返回 NULL。
character_set_schema 字符串 始终返回 NULL。
character_set_name 字符串 如果此列为字符数据或文本数据类型,则返回字符集的唯一名称。 否则,返回 NULL。
collation_catalog 字符串 如果列为字符数据或文本数据类型,则返回 master,指示定义分页的数据库。 否则,此列为 NULL。

DataSourceInformation

名称 类型 说明
CompositeIdentifierSeparatorPattern 字符串 匹配复合标识符中的复合分隔符的正则表达式。 例如,“\.” SQL Server) 或“@|\”的 ( (针对 Oracle)。
复合标识符通常就是数据库对象名称使用的标识符,例如:pubs.dbo.authors 或 pubs@dbo.authors。
对于 SQL Server,使用正则表达式“\.”。 对于 OracleClient,使用“@|\.”。
对于 OLE DB,使用 DBLITERAL_CATALOG_SEPARATOR 或 DBLITERAL_SCHEMA_SEPARATOR。
DataSourceProductName 字符串 通过提供程序访问的产品名称,例如“Oracle”或“SQLServer”。
DataSourceProductVersion 字符串 提供程序访问的产品版本,采用数据源本机格式,而不是 Microsoft 格式。
有时,DataSourceProductVersion 和 DataSourceProductVersionNormalized 的值相同。 对于 OLE DB,这两个值始终相同,因为它们映射到基础本机 API 中相同的函数调用。
DataSourceProductVersionNormalized 字符串 数据源的标准化版本,以便可以使用 String.Compare() 进行比较。 对于提供程序的所有版本,此值的格式一致,以避免版本 10 排序在版本 1 和版本 2 之间。
例如,Oracle 提供程序的标准化版本使用“nn.nn.nn.nn.nn”格式,这样,Oracle 8i 数据源将返回“08.01.07.04.01”。 SQL Server 使用典型的 Microsoft“nn.nn.nnnn”格式。
有时,DataSourceProductVersion 和 DataSourceProductVersionNormalized 的值相同。 对于 OLE DB,这两个值始终相同,因为它们映射到基础本机 API 中相同的函数调用。
GroupByBehavior GroupByBehavior 指定 GROUP BY 子句中的列与选择列表中的非聚合列之间的关系。
IdentifierPattern 字符串 匹配标识符并且包含标识符的匹配值的正则表达式。 例如“[A-Za-z0-9_#$]”。
IdentifierCase IdentifierCase 指示未加引号的标识符是否区分大小写。
OrderByColumnsInSelect bool 指定 ORDER BY 子句中的列是否必须在选择列表中。 如果值为 true,表示这些列必须在选择列表中,如果值为 false,表示这些列不必在选择列表中。
ParameterMarkerFormat 字符串 表示如何格式化参数的格式化字符串。
如果数据源不支持命名的参数,此字符串中的第一个占位符应是格式化参数名的位置。
例如,如果数据源希望使用具有名称并以“:”为前缀的参数,则此字符串将为“:{0}”。 在使用参数名“p1”格式化此字符串时,生成的字符串为“:p1”。
如果数据源希望参数以“@”作为前缀,但名称中已包含这些参数,则为“”{0},并且设置名为“@p1”的参数的格式的结果只是“@p1”。
如果数据源不希望使用命名的参数,而希望使用“?”字符, 可以将格式化字符串仅指定为“?”,这样将忽略参数名称。 对于 OLE DB,将返回‘?’。
ParameterMarkerPattern 字符串 匹配参数标记的正则表达式。 它具有一个与参数名称(如果有)匹配的值。
例如,如果受支持命名参数包含将包括在参数名中的“@”引导字符,则为:“(@[A-Za-z0-9_$#]*)”。
但是,如果受支持命名参数以“:”作为引导字符,并且该字符并非参数名的一部分,则为:“:([A-Za-z0-9_$#]*)”。
当然,如果数据源不支持命名参数,则此字符串将为“?”。
ParameterNameMaxLength int 参数名的最大长度(字符数)。 Visual Studio 期望如果支持参数名,最大长度的最小值为 30 个字符。
如果数据源不支持命名参数,此属性将返回零。
ParameterNamePattern 字符串 匹配有效参数名的正则表达式。 对于参数名可以使用的字符,不同的数据源采用不同的规则。
Visual Studio 期望如果支持参数名,字符“\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\p{Nd}”是参数名支持的最小有效字符集。
QuotedIdentifierPattern 字符串 匹配加引号的标识符并且包含标识符本身(不加引号)的匹配值的正则表达式。 例如,如果数据源使用双引号标识带引号的标识符,则为:“ ( ([^\”]|\“\”) *) ”。
QuotedIdentifierCase IdentifierCase 指示加引号的标识符是否区分大小写。
StatementSeparatorPattern 字符串 匹配语句分隔符的正则表达式。
StringLiteralPattern 字符串 匹配字符串文本并且包含文本本身的匹配值的正则表达式。 例如,如果数据源使用单引号标识字符串,将为“('([^']|'')*')”。
SupportedJoinOperators SupportedJoinOperators 指定数据源支持的 SQL join 语句类型。

DataTypes

列名 数据类型 说明
TypeName 字符串 提供程序特定的数据类型名称。
ProviderDbType int 在指定参数类型时应使用的提供程序特定的类型值。 例如,SqlDbType.MoneyOracleType.Blob
ColumnSize long 非数值列或参数的长度是指提供程序为此类型定义的最大值或长度。
对于字符数据,此值是指最大值或定义长度,单位由数据源定义。 对于某些字符数据类型,Oracle 的观念是先指定长度,然后指定实际存储大小。 对于 Oracle,此值仅定义长度(单位)。
对于日期时间数据类型,此值是指字符串表示形式的长度(假定小数秒元素允许的最大精度)。
如果数据类型为数值,则是数据类型的最大精度的上限。
CreateFormat 字符串 格式化字符串,表示如何将此列添加到数据定义语句中,例如 CREATE TABLE。 CreateParameter 数组中的每个元素均应通过格式化字符串中的“参数标记”表示。
例如,SQL 数据类型 DECIMAL 需要精度和小数位数。 这种情况下,格式化字符串将为“DECIMAL({0},{1})”。
CreateParameters 字符串 创建此数据类型的列时必须指定的创建参数。 每个创建参数按照要提供的顺序在该字符串中列出,使用逗号分隔。
例如,SQL 数据类型 DECIMAL 需要精度和小数位数。 在此情况下,创建参数应包含字符串“精度, 小数位数”。
在创建精度为 10、小数位数为 2 的 DECIMAL 列的文本命令中,CreateFormat 列的值可能为“DECIMAL({0},{1})”,完整的类型说明将为 DECIMAL(10,2)。
数据类型 字符串 数据类型的 .NET Framework 类型的名称。
IsAutoincrementable bool true - 此数据类型的值可能是自动递增的。
false - 此数据类型的值可能不是自动递增的。
注意,这只是表示此数据类型的列可能是自动递增的,而不是表示所有此类型的列都是自动递增的。
IsBestMatch Bool true — 此数据类型是数据存储中的所有数据类型与 DataType 列中值指示的 .NET Framework 数据类型之间的最佳匹配项。
false - 此数据类型不是最佳匹配项。
对于 DataType 列的值相同的每组行,IsBestMatch 列只在一行中设置为 true。
IsCaseSensitive bool true - 此数据类型是字符类型,并且区分大小写。

false - 此数据类型不是字符类型,或不区分大小写。
IsFixedLength bool true - 通过数据定义语言 (DDL) 创建的此数据类型的列为固定长度。

false - 通过 DDL 创建的此数据类型的列为可变长度。

DBNull.Value - 不知道提供程序会使用固定长度列还是可变长度列来映射此字段。
IsFixedPrecisionScale bool true - 此数据类型具有固定的精度和小数位数。

false - 此数据类型没有固定的精度和小数位数。
IsLong bool true - 此数据类型包含很长的数据;很长数据的定义是提供程序特定的。

false - 此数据类型不包含很长的数据。
IsNullable bool true - 此数据类型可以为 Null。

false - 此数据类型不可为 Null。

DBNull.Value - 不知道此数据类型是否可以为 Null。
IsSearchable bool true - 此数据类型可以用于包含任何运算符(LIKE 谓词除外)的 WHERE 子句中。

false - 此数据类型不能用于包含任何运算符(LIKE 谓词除外)的 WHERE 子句中。
IsSearchableWithLike bool true - 此数据类型可以与 LIKE 谓词一起使用。

false - 此数据类型不能与 LIKE 谓词一起使用。
IsUnsigned bool true - 此数据类型无符号。

false - 此数据类型有符号。

DBNull.Value - 不适用于数据类型。
MaximumScale short 如果类型指示符为数值类型,是指小数点右侧允许的最大位数。 否则,此值为 DBNull.Value
MinimumScale short 如果类型指示符为数值类型,是指小数点右侧允许的最小位数。 否则,此值为 DBNull.Value
IsConcurrencyType bool true – 每次行更改并且列值与所有以前值不同时,数据库将更新此数据类型

false – 每次行更改时,数据库不更新此数据类型

DBNull.Value – 数据库不支持此数据类型。
IsLiteralsSupported bool true – 此数据类型可以以文本形式表示。

false – 此数据类型不能以文本形式表示。
LiteralPrefix 字符串 应用于给定文本的前缀。
LitteralSuffix 字符串 应用于给定文本的后缀。
NativeDataType 字符串 OLE DB 特定的列,用于公开数据类型的 OLE DB 类型。

MetaDataCollections

列名 数据类型 说明
CollectionName 字符串 为返回集合传递给 GetSchema 方法的集合名称。
NumberOfRestriction int 可为集合指定的限制数。
NumberOfIdentifierParts int 复合标识符/数据库对象名称中的部分数。 例如,在 SQL Server 中,表为 3,列为 4。 在 Oracle 中,表为 2,列为 3。

限制

列名 数据类型 说明
CollectionName 字符串 应用这些限制的集合的名称。
RestrictionName 字符串 集合中的限制的名称。
RestrictionDefault 字符串 已忽略。
RestrictionNumber int 此特定限制在限制集合中的实际位置。

列名 数据类型 说明
table_catalog 字符串 表的编录。
table_schema 字符串 包含表的架构。
table_name 字符串 表名。
table_type 字符串 表的类型。 可以是 VIEW 或 BASE TABLE。

示例

另请参阅

从主机文件系统获取架构信息
用于主机文件的 BizTalk 适配器配置