SQL Server 架构集合

适用于 .NET Framework .NET .NET Standard

下载 ADO.NET

除了通用架构集合,Microsoft SqlClient Data Provider for SQL Server 还支持其他架构集合。 架构集合因使用的 SQL Server 的版本而稍有不同。 要确定支持的架构集合列表,请以无参数的形式或使用架构集合名称“MetaDataCollections”调用 GetSchema 方法。 此时将返回 DataTable,包含支持的架构集合列表、每个架构集合支持的限制数以及所使用的标识符部分数。

数据库

ColumnName 数据类型 说明
database_name 字符串 数据库的名称。
dbid Int16 数据库 ID。
创建日期 日期时间 数据库的创建日期。

外键

ColumnName 数据类型 说明
CONSTRAINT_CATALOG 字符串 约束所属的编录。
CONSTRAINT_SCHEMA 字符串 包含约束的架构。
CONSTRAINT_NAME 字符串 名称:
TABLE_CATALOG 字符串 该约束所属的表名。
TABLE_SCHEMA 字符串 包含该表的架构模式。
TABLE_NAME 字符串 表名称
CONSTRAINT_TYPE 字符串 约束的类型。 只允许“FOREIGN KEY”。
IS_DEFERRABLE 字符串 指定约束是否可以推迟。 返回值为 NO。
INITIALLY_DEFERRED 字符串 指定约束最初是否可以推迟。 返回值为 NO。

索引

ColumnName 数据类型 说明
constraint_catalog 字符串 该索引所属的目录
constraint_schema 字符串 包含索引的架构。
constraint_name 字符串 索引的名称。
table_catalog 字符串 与该索引关联的表名。
表架构 字符串 包含与该索引关联的表的模式。
table_name 字符串 表名。
index_name 字符串 索引名称。
type_desc 字符串 索引类型可以为以下值之一:

- 堆
- 集群式
- 非群集
-Xml
- 空间

IndexColumns

ColumnName 数据类型 说明
约束目录 字符串 该索引所属的目录。
constraint_schema 字符串 包含索引的架构。
constraint_name 字符串 索引的名称。
table_catalog 字符串 与该索引关联的表名。
表架构 字符串 包含与该索引关联的表的模式。
table_name 字符串 表名。
column_name 字符串 与该索引关联的列名。
序号位置 Int32 列序号位置。
密钥类型 字节 对象的类型。
index_name 字符串 索引名称。

过程

ColumnName 数据类型 说明
SPECIFIC_CATALOG 字符串 目录的具体名称。
SPECIFIC_SCHEMA 字符串 特定的架构名称。
SPECIFIC_NAME 字符串 目录的具体名称。
ROUTINE_CATALOG 字符串 存储过程所属的目录。
ROUTINE_SCHEMA 字符串 包含存储过程的架构。
ROUTINE_NAME 字符串 存储过程的名称。
ROUTINE_TYPE 字符串 返回 PROCEDURE 存储过程和 FUNCTION 函数。
已创建 日期时间 过程的创建时间。
最后修改时间 日期时间 上次修改过程的时间。

过程参数

ColumnName 数据类型 说明
SPECIFIC_CATALOG 字符串 此参数所属的过程的编录名称。
SPECIFIC_SCHEMA 字符串 包含此参数所属的过程的架构。
SPECIFIC_NAME 字符串 此参数所属的过程的名称。
ORDINAL_POSITION Int32 参数的序号位置从 1 开始。 对于过程的返回值,其值为 0。
PARAMETER_MODE 字符串 如果是输入参数,则返回 IN;如果是输出参数,则返回 OUT;如果是输入/输出参数,则返回 INOUT。
IS_RESULT 字符串 如果表示某个过程的结果,且该过程是函数,则返回 YES。 否则,返回 NO。
AS_LOCATOR 字符串 如果声明为定位器,则返回 YES。 否则,返回 NO。
PARAMETER_NAME 字符串 参数的名称。 如果这对应于函数的返回值,则为 NULL。
DATA_TYPE 字符串 系统提供的数据类型。
字符最大长度 Int32 二进制或字符数据类型的最大长度(字符)。 否则,返回 NULL。
字符八位组长度 Int32 二进制或字符数据类型的最大长度(字节)。 否则,返回 NULL。
COLLATION_CATALOG 字符串 参数排序规则的编录名称。 如果不是一种字符类型,则返回 NULL。
COLLATION_SCHEMA 字符串 始终返回 NULL。
COLLATION_NAME 字符串 参数排序规则的名称。 如果不是一种字符类型,则返回 NULL。
CHARACTER_SET_CATALOG 字符串 参数字符集的编录名称。 如果不是一种字符类型,则返回 NULL。
CHARACTER_SET_SCHEMA 字符串 始终返回 NULL。
CHARACTER_SET_NAME 字符串 参数的字符集名称。 如果不是一种字符类型,则返回 NULL。
NUMERIC_PRECISION 字节 近似数字数据、精确数字数据、整数数据或货币数据的精度。 否则,返回 NULL。
NUMERIC_PRECISION_RADIX Int16 近似数字数据、精确数字数据、整数数据或货币数据的精度基数。 否则,返回 NULL。
NUMERIC_SCALE Int32 近似数值数据、精确数值数据、整数数据或货币数据的标度。 否则,返回 NULL。
日期时间精度 Int16 如果参数类型为 datetime 或 smalldatetime,则为小数秒数的精度。 否则,返回 NULL。
INTERVAL_TYPE 字符串 NULL。 保留供 SQL Server 以后使用。
INTERVAL_PRECISION Int16 NULL。 保留供 SQL Server 以后使用。

ColumnName 数据类型 说明
TABLE_CATALOG 字符串 表目录
TABLE_SCHEMA 字符串 包含该表的架构模式。
TABLE_NAME 字符串 表名。
TABLE_TYPE 字符串 表的类型。 可以是 VIEW 或 BASE TABLE。

ColumnName 数据类型 说明
TABLE_CATALOG 字符串 表目录
TABLE_SCHEMA 字符串 包含该表的架构模式。
TABLE_NAME 字符串 表名。
COLUMN_NAME 字符串 列名称。
ORDINAL_POSITION Int32 列标识编号。
列默认值 字符串 列的默认值
IS_NULLABLE 字符串 列的可空性。 如果此列允许 NULL,此列将返回 YES。 否则,返回 No。
DATA_TYPE 字符串 系统提供的数据类型。
字符最大长度 Int32 – Sql8、Int16 – Sql7 二进制数据、字符数据或文本和图像数据的最大长度(字符)。 否则,返回 NULL。
字符八位组长度 Int32 – SQL8、Int16 – Sql7 二进制数据、字符数据或文本和图像数据的最大长度(字节)。 否则,返回 NULL。
NUMERIC_PRECISION 无符号字节 近似数字数据、精确数字数据、整数数据或货币数据的精度。 否则,返回 NULL。
NUMERIC_PRECISION_RADIX Int16 近似数字数据、精确数字数据、整数数据或货币数据的精度基数。 否则,返回 NULL。
NUMERIC_SCALE Int32 近似数值数据、精确数值数据、整数数据或货币数据的标度。 否则,返回 NULL。
日期时间精度 Int16 日期时间及 SQL-92 时间间隔数据类型的子类型代码。 对于其他数据类型,返回 NULL。
CHARACTER_SET_CATALOG 字符串 如果列为字符数据或文本数据类型,则返回 master,指示字符集所处的数据库。 否则,返回 NULL。
CHARACTER_SET_SCHEMA 字符串 始终返回 NULL。
CHARACTER_SET_NAME 字符串 如果此列为字符数据或文本数据类型,则返回字符集的唯一名称。 否则,返回 NULL。
COLLATION_CATALOG 字符串 如果列属于字符数据或文本数据类型,则返回 master,表示定义该排序规则的数据库。 否则,此列为 NULL。
IS_FILESTREAM 字符串 如果列具有 FILESTREAM 属性,则为“是”。

NO,如果该列没有 FILESTREAM 属性。
IS_SPARSE 字符串 如果该列为稀疏列,则为 YES。

如果该列不是稀疏列,则为 NO。
IS_COLUMN_SET 字符串 YES,如果该列是列集列。

如果该列不是列集列,则为 NO。

AllColumns

AllColumns 架构集合用于支持稀疏列。 AllColumns 与 Columns 架构集合具有相同的限制,并生成相同的 DataTable 架构。 唯一的区别在于,AllColumns 包含列集中的列,而这些列未包含在 Columns 架构集合中。 下表介绍了这些列。

ColumnName 数据类型 说明
TABLE_CATALOG 字符串 表目录
TABLE_SCHEMA 字符串 包含该表的架构模式。
TABLE_NAME 字符串 表名。
COLUMN_NAME 字符串 列名称。
ORDINAL_POSITION Int32 列标识编号。
列默认值 字符串 列的默认值
IS_NULLABLE 字符串 列的可空性。 如果此列允许 NULL,此列将返回 YES。 否则,返回 NO。
DATA_TYPE 字符串 系统提供的数据类型。
字符最大长度 Int32 二进制数据、字符数据或文本和图像数据的最大长度(字符)。 否则,返回 NULL。
字符八位组长度 Int32 二进制数据、字符数据或文本和图像数据的最大长度(字节)。 否则,返回 NULL。
NUMERIC_PRECISION 无符号字节 近似数字数据、精确数字数据、整数数据或货币数据的精度。 否则,返回 NULL。
NUMERIC_PRECISION_RADIX Int16 近似数字数据、精确数字数据、整数数据或货币数据的精度基数。 否则,返回 NULL。
NUMERIC_SCALE Int32 近似数值数据、精确数值数据、整数数据或货币数据的标度。 否则,返回 NULL。
日期时间精度 Int16 日期时间及 SQL-92 时间间隔数据类型的子类型代码。 对于其他数据类型,返回 NULL。
CHARACTER_SET_CATALOG 字符串 如果列为字符数据或文本数据类型,则返回 master,指示字符集所处的数据库。 否则,返回 NULL。
CHARACTER_SET_SCHEMA 字符串 始终返回 NULL。
CHARACTER_SET_NAME 字符串 如果此列为字符数据或文本数据类型,则返回字符集的唯一名称。 否则,返回 NULL。
COLLATION_CATALOG 字符串 如果列属于字符数据或文本数据类型,则返回 master,表示定义该排序规则的数据库。 否则,此列为 NULL。
IS_FILESTREAM 字符串 如果列具有 FILESTREAM 属性,则为“是”。

NO,如果该列没有 FILESTREAM 属性。
IS_SPARSE 字符串 如果该列为稀疏列,则为 YES。

如果该列不是稀疏列,则为 NO。
IS_COLUMN_SET 字符串 YES,如果该列是列集列。

如果该列不是列集列,则为 NO。

ColumnSetColumns

ColumnSetColumns 架构集合用于支持稀疏列。 ColumnSetColumns 架构集合返回列集中所有列的架构。 下表介绍了这些列。

ColumnName 数据类型 说明
TABLE_CATALOG 字符串 表目录
TABLE_SCHEMA 字符串 包含该表的架构模式。
TABLE_NAME 字符串 表名。
COLUMN_NAME 字符串 列名称。
ORDINAL_POSITION Int32 列标识编号。
列默认值 字符串 列的默认值
IS_NULLABLE 字符串 列的可空性。 如果此列允许 NULL,此列将返回 YES。 否则,返回 NO。
DATA_TYPE 字符串 系统提供的数据类型。
字符最大长度 Int32 二进制数据、字符数据或文本和图像数据的最大长度(字符)。 否则,返回 NULL。
字符八位组长度 Int32 二进制数据、字符数据或文本和图像数据的最大长度(字节)。 否则,返回 NULL。
NUMERIC_PRECISION 无符号字节 近似数字数据、精确数字数据、整数数据或货币数据的精度。 否则,返回 NULL。
NUMERIC_PRECISION_RADIX Int16 近似数字数据、精确数字数据、整数数据或货币数据的精度基数。 否则,返回 NULL。
NUMERIC_SCALE Int32 近似数值数据、精确数值数据、整数数据或货币数据的标度。 否则,返回 NULL。
日期时间精度 Int16 日期时间及 SQL-92 时间间隔数据类型的子类型代码。 对于其他数据类型,返回 NULL。
CHARACTER_SET_CATALOG 字符串 如果列为字符数据或文本数据类型,则返回 master,指示字符集所处的数据库。 否则,返回 NULL。
CHARACTER_SET_SCHEMA 字符串 始终返回 NULL。
CHARACTER_SET_NAME 字符串 如果此列为字符数据或文本数据类型,则返回字符集的唯一名称。 否则,返回 NULL。
COLLATION_CATALOG 字符串 如果列属于字符数据或文本数据类型,则返回 master,表示定义该排序规则的数据库。 否则,此列为 NULL。
IS_FILESTREAM 字符串 如果列具有 FILESTREAM 属性,则为“是”。

NO,如果该列没有 FILESTREAM 属性。
IS_SPARSE 字符串 如果该列为稀疏列,则为 YES。

如果该列不是稀疏列,则为 NO。
IS_COLUMN_SET 字符串 YES,如果该列是列集列。

如果该列不是列集列,则为 NO。

用户

ColumnName 数据类型 说明
uid Int16 用户 ID,在此数据库中是唯一的。 1 为数据库所有者。
user_name 字符串 在此数据库中唯一的用户名和组名。
createdate 日期时间 帐户的添加日期。
更新日期 日期时间 帐户的上次更改日期。

视图

ColumnName 数据类型 说明
TABLE_CATALOG 字符串 视图的目录。
TABLE_SCHEMA 字符串 包含该视图的架构。
TABLE_NAME 字符串 视图名称。
检查选项 字符串 WITH CHECK OPTION 的类型。 如果原始视图使用 WITH CHECK OPTION 创建,则为 CASCADE。 否则,返回 NONE。
是否可更新 字符串 指定视图是否可更新。 始终返回 NO。

查看列

ColumnName 数据类型 说明
查看目录 字符串 视图目录。
VIEW_SCHEMA 字符串 包含该视图的架构。
VIEW_NAME 字符串 视图名称。
TABLE_CATALOG 字符串 与此视图关联的表的目录。
TABLE_SCHEMA 字符串 包含与此视图关联的表的架构。
TABLE_NAME 字符串 与此视图关联的表的名称。 基表。
COLUMN_NAME 字符串 列名称。

用户定义类型

ColumnName 数据类型 说明
assembly_name 字符串 程序集文件的名称。
udt_name 字符串 程序集的类名称。
version_major 对象 主版本号。
version_minor 对象 次要版本号。
version_build 对象 内部版本号。
版本_修订 对象 修订号。
culture_info 对象 与此 UDT 关联的区域性信息。
公钥 对象 此程序集使用的公钥。
is_fixed_length 布尔 指定某类型的长度是否始终与 max_length 相同。
max_length Int16 类型的最大长度(字节数)。
创建日期 日期时间 程序集被创建/注册的日期。
权限集描述 字符串 程序集的权限集/安全级别的友好名称。

另请参阅