SQL Server 架构集合

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

数据库

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

Foreign Keys

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_schema 字符串 包含索引关联的表的架构。
table_name 字符串 表名。
index_name 字符串 索引名称。

Indexes (SQL Server 2008)

从 .NET Framework 版本 3.5 SP1 和 SQL Server 2008 开始,以下列已经添加到 Indexes 架构集合以支持新的空间类型、文件流和稀疏列。 早期版本的 .NET Framework 和 SQL Server 不支持这些列。

ColumnName 数据类型 说明
type_desc 字符串 索引类型可以为以下值之一:

- 堆
- 群集
- 非群集
- XML
- 空间

IndexColumns

ColumnName 数据类型 说明
constraint_catalog 字符串 索引所属的编录。
constraint_schema 字符串 包含索引的架构。
constraint_name 字符串 索引的名称。
table_catalog 字符串 索引关联的表名。
table_schema 字符串 包含索引关联的表的架构。
table_name 字符串 表名。
column_name 字符串 索引关联的列名。
ordinal_position Int32 列序号位置。
KeyType Byte 对象的类型。
index_name 字符串 索引名称。

过程

ColumnName 数据类型 说明
SPECIFIC_CATALOG 字符串 编录的特定名称。
SPECIFIC_SCHEMA 字符串 特定的架构名称。
SPECIFIC_NAME 字符串 特定的目录名称。
ROUTINE_CATALOG 字符串 存储过程所属的编录。
ROUTINE_SCHEMA 字符串 包含存储过程的架构。
ROUTINE_NAME 字符串 存储过程的名称。
ROUTINE_TYPE 字符串 对于存储过程,返回 PROCEDURE,对于函数,返回 FUNCTION。
CREATED DateTime 过程的创建时间。
LAST_ALTERED DateTime 上次修改过程的时间。

过程参数

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 字符串 系统提供的数据类型。
CHARACTER_MAXIMUM_LENGTH Int32 二进制或字符数据类型的最大长度(字符)。 否则,返回 NULL。
CHARACTER_OCTET_LENGTH 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 Byte 近似数字数据、精确数字数据、整数数据或货币数据的精度。 否则,返回 NULL。
NUMERIC_PRECISION_RADIX Int16 近似数字数据、精确数字数据、整数数据或货币数据的精度基数。 否则,返回 NULL。
NUMERIC_SCALE Int32 近似数字数据、精确数字数据、整数数据或货币数据的小数位数。 否则,返回 NULL。
DATETIME_PRECISION 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 列标识号。
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。

Columns (SQL Server 2008)

从 .NET Framework 版本 3.5 SP1 和 SQL Server 2008 开始,以下列已经添加到 Colums 架构集合以支持新的空间类型、文件流和稀疏列。 早期版本的 .NET Framework 和 SQL Server 不支持这些列。

ColumnName 数据类型 说明
IS_FILESTREAM 字符串 YES FILESTREAM

NO,如果列不具有 FILESTREAM 属性。
IS_SPARSE 字符串 YES,如果列是稀疏列。

NO,如果列不是稀疏列。
IS_COLUMN_SET 字符串 YES,如果列是一个列集列。

NO

AllColumns (SQL Server 2008)

从 .NET Framework 版本 3.5 SP1 和 SQL Server 2008 开始,添加了 AllColumns 架构集合以支持稀疏列。 早期版本的 .NET Framework 和 SQL Server 不支持 AllColumns。

AllColumns 与 Columns 架构集合具有相同的限制和生成的 DataTable 架构。 唯一的区别是 AllColumns 包含 Columns 架构集合中未包含的列集列。 下表介绍了这些列。

ColumnName 数据类型 说明
TABLE_CATALOG 字符串 表的编录。
TABLE_SCHEMA 字符串 包含表的架构。
TABLE_NAME 字符串 表名。
COLUMN_NAME 字符串 列名称。
ORDINAL_POSITION Int32 列标识号。
COLUMN_DEFAULT 字符串 列的默认值。
IS_NULLABLE 字符串 列的为空性。 如果此列允许 NULL,此列将返回 YES。 否则,返回 NO。
DATA_TYPE 字符串 系统提供的数据类型。
CHARACTER_MAXIMUM_LENGTH Int32 二进制数据、字符数据或文本和图像数据的最大长度(字符)。 否则,返回 NULL。
CHARACTER_OCTET_LENGTH Int32 二进制数据、字符数据或文本和图像数据的最大长度(字节)。 否则,返回 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。
IS_FILESTREAM 字符串 YES FILESTREAM

NO,如果列不具有 FILESTREAM 属性。
IS_SPARSE 字符串 YES,如果列是稀疏列。

NO,如果列不是稀疏列。
IS_COLUMN_SET 字符串 YES,如果列是一个列集列。

NO

ColumnSetColumns (SQL Server 2008)

从 .NET Framework 版本 3.5 SP1 和 SQL Server 2008 开始,添加了 ColumnSetColumns 架构集合以支持稀疏列。 早期版本的 .NET Framework 和 SQL Server 不支持 ColumnSetColumns。 ColumnSetColumns 架构集合返回列集中所有列的架构。 下表介绍了这些列。

ColumnName 数据类型 说明
TABLE_CATALOG 字符串 表的编录。
TABLE_SCHEMA 字符串 包含表的架构。
TABLE_NAME 字符串 表名。
COLUMN_NAME 字符串 列名称。
ORDINAL_POSITION Int32 列标识号。
COLUMN_DEFAULT 字符串 列的默认值。
IS_NULLABLE 字符串 列的为空性。 如果此列允许 NULL,此列将返回 YES。 否则,返回 NO。
DATA_TYPE 字符串 系统提供的数据类型。
CHARACTER_MAXIMUM_LENGTH Int32 二进制数据、字符数据或文本和图像数据的最大长度(字符)。 否则,返回 NULL。
CHARACTER_OCTET_LENGTH Int32 二进制数据、字符数据或文本和图像数据的最大长度(字节)。 否则,返回 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。
IS_FILESTREAM 字符串 YES FILESTREAM

NO,如果列不具有 FILESTREAM 属性。
IS_SPARSE 字符串 YES,如果列是稀疏列。

NO,如果列不是稀疏列。
IS_COLUMN_SET 字符串 YES,如果列是一个列集列。

NO

用户

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

视图

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

ViewColumns

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

UserDefinedTypes

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

另请参阅