SQL Server 架构集合 (ADO.NET)

更新:November 2007

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

数据库

列名

数据类型

说明

database_name

String

数据库的名称。

Dbid

Int16

数据库 ID。

create_date

DateTime

数据库的创建日期。

Foreign Keys

列名

数据类型

说明

constraint_catalog

String

约束所属的编录。

constraint_schema

String

包含约束的架构。

constraint_name

String

名称。

table_catalog

String

约束所属的表名。

table_schema

String

包含表的架构。

table_name

String

表名。

constraint_type

String

约束的类型。只允许“FOREIGN KEY”。

is_deferrable

String

指定约束是否可以推迟。返回 NO。

initially_deferred

String

指定约束最初是否可以推迟。返回 NO。

Indexes

列名

数据类型

说明

constraint_catalog

String

索引所属的编录。

constraint_schema

String

包含索引的架构。

constraint_name

String

索引的名称。

table_catalog

String

索引关联的表名。

table_schema

String

包含索引关联的表的架构。

table_name

String

表名。

Indexes (SQL Server 2008)

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

列名

数据类型

说明

type_desc

String

索引类型可以为以下值之一:

  • HEAP

  • CLUSTERED

  • NONCLUSTERED

  • XML

  • SPATIAL

IndexColumns

列名

数据类型

说明

constraint_catalog

String

索引所属的编录。

constraint_schema

String

包含索引的架构。

constraint_name

String

索引的名称。

table_catalog

String

索引关联的表名。

table_schema

String

包含索引关联的表的架构。

table_name

String

表名。

column_name

String

索引关联的列名。

ordinal_position

Int32

列的序号位置。

KeyType

UInt16

对象的类型。

Procedures

此集合仅在 SQL Server 2000 以及更高版本中提供。

列名

数据类型

说明

specific_catalog

String

编录的特定名称。

specific_schema

String

架构的特定名称。

specific_name

String

编录的特定名称。

routine_catalog

String

存储过程所属的编录。

routine_schema

String

包含存储过程的架构。

routine_name

String

存储过程的名称。

routine_type

String

对于存储过程,返回 PROCEDURE,对于函数,返回 FUNCTION。

created

DateTime

过程的创建时间。

last_altered

DateTime

上次修改过程的时间。

Procedure Parameters

列名

数据类型

说明

specific_catalog

String

此参数所属的过程的编录名称。

specific_schema

String

包含此参数所属的过程的架构。

specific_name

String

此参数所属的过程的名称。

ordinal_position

Int16

参数的序号位置,从 1 开始。对于过程的返回值,此位置为 0。

parameter_mode

String

如果是输入参数,返回 IN,如果是输出参数,返回 OUT,如果是输入/输出参数,返回 INOUT。

is_result

String

如果指示属于函数的过程的结果,返回 YES。否则,返回 NO。

as_locator

String

如果声明为定位符,返回 YES。否则,返回 NO。

parameter_name

String

参数的名称。如果对应于函数的返回值,返回 NULL。

data_type

String

系统提供的数据类型。

character_maximum_length

Int32

二进制或字符数据类型的最大长度(字符数)。否则,返回 NULL。

character_octet_length

Int32

二进制或字符数据类型的最大长度(字节数)。否则,返回 NULL。

collation_catalog

String

参数分页的编录名称。如果不属于某种字符类型,返回 NULL。

collation_schema

String

始终返回 NULL。

collation_name

String

参数分页的名称。如果不属于某种字符类型,返回 NULL。

character_set_catalog

String

参数字符集的编录名称。如果不属于某种字符类型,返回 NULL。

character_set_schema

String

始终返回 NULL。

character_set_name

String

参数字符集的名称。如果不属于某种字符类型,返回 NULL。

numeric_precision

Byte

近似数值数据、精确数值数据、整数数据或货币数据的精度。否则,返回 NULL。

numeric_precision_radix

Int16

近似数值数据、精确数值数据、整数数据或货币数据的精度基数。否则,返回 NULL。

numeric_scale

Int32

近似数值数据、精确数值数据、整数数据或货币数据的小数位数。否则,返回 NULL。

datetime_precision

Int16

如果参数类型为 datetime 或 smalldatetime,则为小数秒数的精度。否则,返回 NULL。

interval_type

String

NULL。保留供 SQL Server 以后使用。

interval_precision

Int16

NULL。保留供 SQL Server 以后使用。

Tables

列名

数据类型

说明

table_catalog

String

表的编录。

table_schema

String

包含表的架构。

table_name

String

表名。

table_type

String

表的类型。可以是 VIEW 或 BASE TABLE。

Columns

列名

数据类型

说明

table_catalog

String

表的编录。

table_schema

String

包含表的架构。

table_name

String

表名。

column_name

String

列名称。

ordinal_position

Int16

列标识号。

column_default

String

列的默认值。

is_nullable

String

列的可空性。如果此列允许 NULL,此列将返回 YES。否则,返回 No。

data_type

String

系统提供的数据类型。

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

String

如果列为字符数据或文本数据类型,则返回 master,指示字符集所处的数据库。否则,返回 NULL。

character_set_schema

String

始终返回 NULL。

character_set_name

String

如果此列为字符数据或文本数据类型,则返回字符集的唯一名称。否则,返回 NULL。

collation_catalog

String

如果列为字符数据或文本数据类型,则返回 master,指示定义分页的数据库。否则,此列为 NULL。

Columns (SQL Server 2008)

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

列名

数据类型

说明

IS_FILESTREAM

String

YES,如果列具有 FILESTREAM 属性。

NO,如果列不具有 FILESTREAM 属性。

IS_SPARSE

String

YES,如果列是稀疏列。

NO,如果列不是稀疏列。

IS_COLUMN_SET

String

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 架构集合中未包含的列集列。下表介绍了这些列。

列名

数据类型

说明

table_catalog

String

表的编录。

table_schema

String

包含表的架构。

table_name

String

表名。

column_name

String

列名称。

ordinal_position

Int16

列标识号。

column_default

String

列的默认值。

is_nullable

String

列的可空性。如果此列允许 NULL,此列将返回 YES。否则,返回 NO。

data_type

String

系统提供的数据类型。

character_maximum_length

适用于 SQL Server 2000 及更高版本的 Int32、适用于 SQL Server 7.0 的 Int16

二进制数据、字符数据或文本和图像数据的最大长度(字符数)。否则,返回 NULL。

character_octet_length

适用于 SQL Server 2000 及更高版本的 Int32、适用于 SQL Server 7.0 的 Int16

二进制数据、字符数据或文本和图像数据的最大长度(字节数)。否则,返回 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

String

如果列为字符数据或文本数据类型,则返回 master,指示字符集所处的数据库。否则,返回 NULL。

character_set_schema

String

始终返回 NULL。

character_set_name

String

如果此列为字符数据或文本数据类型,则返回字符集的唯一名称。否则,返回 NULL。

collation_catalog

String

如果列为字符数据或文本数据类型,则返回 master,指示定义分页的数据库。否则,此列为 NULL。

IS_FILESTREAM

String

YES,如果列具有 FILESTREAM 属性。

NO,如果列不具有 FILESTREAM 属性。

IS_SPARSE

String

YES,如果列是稀疏列。

NO,如果列不是稀疏列。

IS_COLUMN_SET

String

YES,如果列是一个列集列。

NO,如果列不是一个列集列。

ColumnSetColumns (SQL Server 2008)

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

列名

数据类型

说明

table_catalog

String

表的编录。

table_schema

String

包含表的架构。

table_name

String

表名。

column_name

String

列名称。

ordinal_position

Int16

列标识号。

column_default

String

列的默认值。

is_nullable

String

列的可空性。如果此列允许 NULL,此列将返回 YES。否则,返回 NO。

data_type

String

系统提供的数据类型。

character_maximum_length

适用于 SQL Server 2000 及更高版本的 Int32、适用于 SQL Server 7.0 的 Int16

二进制数据、字符数据或文本和图像数据的最大长度(字符数)。否则,返回 NULL。

character_octet_length

适用于 SQL Server 2000 及更高版本的 Int32、适用于 SQL Server 7.0 的 Int16

二进制数据、字符数据或文本和图像数据的最大长度(字节数)。否则,返回 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

String

如果列为字符数据或文本数据类型,则返回 master,指示字符集所处的数据库。否则,返回 NULL。

character_set_schema

String

始终返回 NULL。

character_set_name

String

如果此列为字符数据或文本数据类型,则返回字符集的唯一名称。否则,返回 NULL。

collation_catalog

String

如果列为字符数据或文本数据类型,则返回 master,指示定义分页的数据库。否则,此列为 NULL。

IS_FILESTREAM

String

YES,如果列具有 FILESTREAM 属性。

NO,如果列不具有 FILESTREAM 属性。

IS_SPARSE

String

YES,如果列是稀疏列。

NO,如果列不是稀疏列。

IS_COLUMN_SET

String

YES,如果列是一个列集列。

NO,如果列不是一个列集列。

Users

列名

数据类型

说明

uid

Int16

在此数据库中唯一的用户 ID。1 为数据库所有者。

name

String

在此数据库中唯一的用户名和组名。

createdate

DateTime

添加帐户的日期。

updatedate

DateTime

上次更改帐户的日期。

Views

此集合仅在 SQL Server 2000 以及更高版本中提供。

列名

数据类型

说明

table_catalog

String

视图的编录。

table_schema

String

包含视图的架构。

table_name

String

视图名称。

check_option

String

WITH CHECK OPTION 的类型。如果原始视图使用 WITH CHECK OPTION 创建,则为 CASCADE。否则,返回 NONE。

is_updatable

String

指定视图是否可以更新。始终返回 NO。

ViewColumns

列名

数据类型

说明

view_catalog

String

视图的编录。

view_schema

String

包含视图的架构。

view_name

String

视图名称。

table_catalog

String

与此视图关联的表的编录。

table_schema

String

包含与此视图关联的表的架构。

table_name

String

与此视图关联的表的名称。基表。

column_name

String

列名称。

UserDefinedTypes

此集合仅在 SQL Server 2005 以及更高版本中提供。

列名

数据类型

说明

assembly_name

String

程序集文件的名称。

UDT_name

String

程序集的类名。

version_major

Object

主版本号。

version_minor

Object

次版本号。

version_build

Object

Build 号。

version_revision

Object

修订号。

Culture_info

Object

与此 UDT 关联的区域性信息。

Public_key

Object

此程序集使用的公钥。

Is_fixed_length

Boolean

指定类型的长度是否始终与 max_length 相同。

max_length

Int16

类型的最大长度(字节数)。

permission_set_desc

String

程序集的权限集/安全级别的友好名称。

create_date

日期时间

创建/注册程序集的日期。

请参见

其他资源

检索数据库架构信息 (ADO.NET)