一般来说,元数据函数返回的是有关指定数据库和数据对象的信息。下面介绍几种元数据函数。
1、COL_NAME(tab_id,col_id),返回表tab_id的tab_id的列名。
例:selectCOL_NAME(OBJECT_ID('employees'),3); 结果为’FirstName’
2、COLUMNPROPERTY(id,col,property),返回指定列的信息。property属于以下值:
值
说明
AllowsNull
允许空值。1 = TRUE,0 = FALSE,NULL = 输入无效。
ColumnId
对应于 sys.columns.column_id 的列 ID 值。
FullTextTypeColumn
表中的 TYPE COLUMN,其中包含 column 的文档类型信息。
IsComputed
列是计算列。1 = TRUE,0 = FALSE,NULL = 输入无效。
IsCursorType
过程参数类型为 CURSOR。1 = TRUE,0 = FALSE,NULL = 输入无效。
IsDeterministic
列是确定性列。此属性只适用于计算列和视图列。1 = TRUE,0 = FALSE,NULL = 输入无效。非计算列或视图列。
IsFulltextIndexed
列已经注册为全文索引。1 = TRUE,0 = FALSE,NULL = 输入无效。
IsIdentity
列使用 IDENTITY 属性。1 = TRUE,0 = FALSE, NULL = 输入无效。
IsIdNotForRepl
列检查 IDENTITY_INSERT 设置。如果指定了 IDENTITY NOT FOR REPLICATION,则不检查 IDENTITY_INSERT 设置。1 = TRUE,0 = FALSE, NULL = 输入无效。
IsIndexable
可以对列进行索引。1 = TRUE,0 = FALSE, NULL = 输入无效。
IsOutParam
过程参数是输出参数。1 = TRUE,0 = FALSE, NULL = 输入无效。
IsPrecise
列是精确列。此属性只适用于确定性列。1 = TRUE,0 = FALSE, NULL = 输入无效。
IsRowGuidCol
列具有 uniqueidentifier 数据类型,并且定义了 ROWGUIDCOL 属性。1 = TRUE,0 = FALSE, NULL = 输入无效。
IsSystemVerified
列的确定性和精度属性可以使用 数据库引擎 验证。此属性只应用于计算列和视图中的列。1 = TRUE,0 = FALSE, NULL = 输入无效。
IsXmlIndexable
可以在 XML 索引中使用 XML 列。1 = TRUE,0 = FALSE, NULL = 输入无效。
Precision
列或参数的数据类型的长度。指定的列数据类型的长度,-1 = xml 或大值类型,NULL = 输入无效。
Scale
列或参数的数据类型的小数位数。
SystemDataAccess
列是由访问 SQL Server 的系统目录或虚拟系统表中数据的函数派生的。此属性只应用于计算列和视图中的列。1 = TRUE,0 = FALSE, NULL = 输入无效。
UserDataAccess
列是由访问储存于 SQL Server 本地实例的用户表中数据的函数派生的。此属性只应用于计算列和视图中的列。1 = TRUE,0 = FALSE, NULL = 输入无效。
UsesAnsiTrim
第一次创建表时,ANSI_PADDING 设置为 ON。此属性仅应用于列或者 char 或 varchar 类型的参数。1 = TRUE,0 = FALSE, NULL = 输入无效。
IsSparse
列为稀疏列。1 = TRUE,0 = FALSE, NULL = 输入无效。
IsColumnSet
列为列集。1 = TRUE,0 = FALSE, NULL = 输入无效。
3、DATABASEPROPERYTY(database,property),返回指定的数据库的指定数据库属性值。
4、DB_ID([db_name]),返回数据库的db_name的标识符,即返回当前数据库的标识符。
例: selectDB_ID('Master'),结果为1
5、DB_NAME([db_id]),返回带有标识符db_id的数据库名,如果没有指定标识符,就显示当前数据名称。
例:selectDB_NAME(1),结果为’master’
6、INDEX_COL(table,i,no),返回表table中的索引列,该索引列有索引标识符i及该列在索引中的位置no指定。
7、INDEXPROPERY(obj_id,index_name,property),返回指定表标识号、索引或统计名称及属性名称的指定索引值或统计属性值。
8、OBJECT_NAME(obj_id),返回有标识符obj_id的数据库对象名称。
例:selectOBJECT_NAME(245575913),结果为‘Products’
9、OBJECT_ID(obj_name),返回数据库对象obj_name对应的标识符。
例:selectOBJECT_ID('products'); 结果为245575913
9、OBJECTPROPERTY(obj_id,property),返回当前数据对象。property为以下值:
属性名称
说明
CnstIsClustKey
具有聚集索引的 PRIMARY KEY 约束。1 = True,0 = False
CnstIsColumn
单个列上的 CHECK、DEFAULT 或 FOREIGN KEY 约束。1 = True,0 = False
CnstIsDeleteCascade
具有 ON DELETE CASCADE 选项的 FOREIGN KEY 约束。1 = True,0 = False
CnstIsDisabled
禁用的约束。1 = True,0 = False
CnstIsNonclustKey
非聚集索引的 PRIMARY KEY 或 UNIQUE 约束。1 = True,0 = False
CnstIsNotRepl
使用 NOT FOR REPLICATION 关键字定义的约束。1 = True,0 = False
CnstIsNotTrusted
启用约束时未检查现有行,因此可能不是所有行都适用该约束。1 = True,0 = False
CnstIsUpdateCascade
具有 ON UPDATE CASCADE 选项的 FOREIGN KEY 约束。1 = True,0 = False
ExecIsAfterTrigger
AFTER 触发器。1 = True,0 = False
ExecIsAnsiNullsOn
创建时的 ANSI_NULLS 设置。1 = True,0 = False
ExecIsDeleteTrigger
DELETE 触发器。1 = True,0 = False
ExecIsFirstDeleteTrigger
对表执行 DELETE 时触发的第一个触发器。1 = True,0 = False
ExecIsFirstInsertTrigger
对表执行 INSERT 时触发的第一个触发器。1 = True,0 = False
ExecIsFirstUpdateTrigger
对表执行 UPDATE 时触发的第一个触发器。1 = True,0 = False
ExecIsInsertTrigger
INSERT 触发器。1 = True,0 = False
ExecIsInsteadOfTrigger
INSTEAD OF 触发器。1 = True,0 = False
ExecIsLastDeleteTrigger
对表执行 DELETE 时激发的最后一个触发器。1 = True,0 = False
ExecIsLastInsertTrigger
对表执行 INSERT 时激发的最后一个触发器。1 = True,0 = False
ExecIsLastUpdateTrigger
对表执行 UPDATE 时激发的最后一个触发器。1 = True,0 = False
ExecIsQuotedIdentOn
创建时的 QUOTED_IDENTIFIER 设置1 = True,0 = False
ExecIsStartup
启动过程。1 = True,0 = False
ExecIsTriggerDisabled
禁用的触发器。1 = True,0 = False
ExecIsTriggerNotForRepl
定义为 NOT FOR REPLICATION 的触发器。1 = True,0 = False
ExecIsUpdateTrigger
UPDATE 触发器。1 = True,0 = False
HasAfterTrigger
表或视图具有 AFTER 触发器。1 = True,0 = False
HasDeleteTrigger
表或视图具有 DELETE 触发器。1 = True,0 = False
HasInsertTrigger
表或视图具有 INSERT 触发器。1 = True,0 = False
HasInsteadOfTrigger
表或视图具有 INSTEAD OF 触发器。1 = True,0 = False
HasUpdateTrigger
表或视图具有 UPDATE 触发器。1 = True,0 = False
IsAnsiNullsOn
指定表的 ANSI NULLS 选项设置为 ON。这表示所有对空值的比较都取值为 UNKNOWN。只要表存在,此设置将应用于表定义中的所有表达式,包括计算列和约束。1 = True,0 = False
IsCheckCnst
CHECK 约束。1 = True,0 = False
IsConstraint
列或表的单列 CHECK、DEFAULT 或 FOREIGN KEY 约束。1 = True,0 = False
IsDefault
绑定的默认值。1 = True,0 = False
IsDefaultCnst
DEFAULT 约束。1 = True,0 = False
IsDeterministic
函数或视图的确定性属性。1 = True,0 = False
IsEncrypted
指示模块语句的原始文本已转换为模糊格式。模糊代码的输出在 SQL Server 2005 的任何目录视图中都不能直接显示。对系统表或数据库文件没有访问权限的用户不能检索模糊文本。但是,能够通过 DAC 端口访问系统表的用户或能够直接访问数据库文件的用户可以检索此文本。此外,能够向服务器进程附加调试器的用户可在运行时从内存中检索原始过程。1 = 已加密,0 = 未加密,基本数据类型:int
IsExecuted
可执行对象(视图、过程、函数或触发器)。1 = True,0 = False
IsExtendedProc
扩展过程。1 = True,0 = False
IsForeignKey
FOREIGN KEY 约束。1 = True,0 = False
IsIndexed
包含索引的表或视图。1 = True,0 = False
IsIndexable
可以创建索引的表或视图。1 = True,0 = False
IsInlineFunction
内联函数。1 = True,0 = False
IsMSShipped
安装 SQL Server 过程中创建的对象。1 = True,0 = False
IsPrimaryKey
PRIMARY KEY 约束。1 = True,0 = False ,NULL = 非函数,或对象 ID 无效。
IsProcedure
过程。1 = True,0 = False
IsQuotedIdentOn
指定对象的引号标识符设置为 ON。这表示用英文双引号分隔对象定义中涉及的所有表达式中的标识符。1 = ON,0 = OFF
IsQueue
Service Broker 队列.1 = True,0 = False
IsReplProc
复制过程。1 = True,0 = False
IsRule
绑定规则。1 = True,0 = False
IsScalarFunction
标量值函数。1 = 标量值函数,0 = 非标量值函数
IsSchemaBound
使用 SCHEMABINDING 创建的绑定到架构的函数或视图。1 = 绑定到架构,0 = 不绑定架构。
IsSystemTable
系统表。1 = True,0 = False
IsTable
表。1 = True,0 = False
IsTableFunction
表值函数。1 = 表值函数.0 = 非表值函数
IsTrigger
触发器。1 = True,0 = False
IsUniqueCnst
UNIQUE 约束。1 = True,0 = False
IsUserTable
用户定义的表。1 = True,0 = False
IsView
视图。1 = True,0 = False
OwnerId
对象的所有者。
TableDeleteTrigger
表具有 DELETE 触发器。>1 = 指定类型的第一个触发器的 ID。
TableDeleteTriggerCount
表具有指定数目的 DELETE 触发器。>0 = DELETE 触发器数目。
TableFullTextMergeStatus
表所具有的全文索引当前是否正在合并。0 = 表没有全文索引,或者全文索引未在合并。1 = 全文索引正在合并。
TableFullTextBackgroundUpdateIndexOn
表已启用全文后台更新索引(自动更改跟踪)。1 = True,0 = False
TableFulltextCatalogId
表的全文索引数据所在的全文目录的 ID。非零 = 全文目录 ID,它与全文索引表中标识行的唯一索引相关。0 = 表没有全文索引。
TableFulltextChangeTrackingOn
表已启用全文更改跟踪。1 = True,0 = False
TableFulltextDocsProcessed
自开始全文索引以来所处理的行数。在为进行全文搜索而正在编制索引的表中,将一个行的所有列视为要编制索引的文档的一部分。0 = 没有完成的活动爬网或全文索引。> 0 = 以下选项之一:
· 自从开始完整、增量或手动更改跟踪填充以来,由插入或更新操作处理的文档数。
· 自从执行以下操作以来由插入或更新操作处理的行数:启用具有后台更新索引填充功能的更改跟踪、更改全文索引架构、重建全文目录或重新启动 SQL Server 的实例等。
NULL = 表没有全文索引。
TableFulltextFailCount
全文搜索未编制索引的行数。
0 = 填充已完成。
> 0 = 以下选项之一:
· 自从开始完整、增量和手动更新更改跟踪填充以来未编制索引的文档数。
· 对于具有后台更新索引功能的更改跟踪,则为自从开始填充或重新启动填充以来未编制索引的行数。这可能由架构更改、目录重建、服务器重新启动等引起。
NULL = 表没有全文索引。
TableFulltextItemCount
成功编制了全文索引的行数。
TableFulltextKeyColumn
与参与全文索引定义的单列唯一索引关联的列的 ID。
0 = 表没有全文索引。
TableFulltextPendingChanges
要处理的挂起更改跟踪项的数目。
0 = 未启用更改跟踪。
NULL = 表没有全文索引。
TableFulltextPopulateStatus
0 = 空闲。
1 = 正在进行完全填充。
2 = 正在进行增量填充。
3 = 正在传播所跟踪的更改。
4 = 正在进行后台更新索引(例如,自动跟踪更改)。
5 = 全文索引已中止或暂停。
TableHasActiveFulltextIndex
表具有活动的全文索引。
1 = True
0 = False
TableHasCheckCnst
表具有 CHECK 约束。
1 = True
0 = False
TableHasClustIndex
表具有聚集索引。
1 = True
0 = False
TableHasDefaultCnst
表具有 DEFAULT 约束。
1 = True
0 = False
TableHasDeleteTrigger
表具有 DELETE 触发器。
1 = True
0 = False
TableHasForeignKey
表具有 FOREIGN KEY 约束。
1 = True
0 = False
TableHasForeignRef
表由 FOREIGN KEY 约束引用。
1 = True
0 = False
TableHasIdentity
表具有标识列。
1 = True
0 = False
TableHasIndex
表具有任意类型的索引。
1 = True
0 = False
TableHasInsertTrigger
对象具有 INSERT 触发器。
1 = True
0 = False
TableHasNonclustIndex
表有非聚集索引。
1 = True
0 = False
TableHasPrimaryKey
表具有主键。
1 = True
0 = False
TableHasRowGuidCol
表的 uniqueidentifier 列具有 ROWGUIDCOL。
1 = True
0 = False
TableHasTextImage
表具有 text、ntext 或 image 列。
1 = True
0 = False
TableHasTimestamp
表具有 timestamp 列。
1 = True
0 = False
TableHasUniqueCnst
表具有 UNIQUE 约束。
1 = True
0 = False
TableHasUpdateTrigger
对象有 UPDATE 触发器。
1 = True
0 = False
TableHasVarDecimalStorageFormat
为 vardecimal 存储格式启用表。
1 = True
0 = False
TableInsertTrigger
表具有 INSERT 触发器。
>1 = 指定类型的第一个触发器的 ID。
TableInsertTriggerCount
表有指定数目的 INSERT 触发器。
>0 = INSERT 触发器的个数。
TableIsFake
表不是真实的表。它将由 SQL Server 数据库引擎根据需要在内部进行具体化。
1 = True
0 = False
TableIsLockedOnBulkLoad
bcp 或 BULK INSERT 作业导致表被锁。
1 = True
0 = False
TableIsPinned
驻留表以将其保留在数据缓存中。
0 = False
SQL Server 2005 及更高版本不支持此功能。
TableTextInRowLimit
text in row 允许的最大字节数。
如果未设置 text in row 选项,则返回 0。
TableUpdateTrigger
表具有 UPDATE 触发器。
>1 = 指定类型的第一个触发器的 ID。
TableUpdateTriggerCount
表有指定数目的 UPDATE 触发器。
> 0 = UPDATE 触发器的个数。
TableHasColumnSet
表具有列集。
0 = False
1 = True
有关详细信息,请参阅使用列集。
转载于:https://www.cnblogs.com/zhaozhan/archive/2010/05/20/1740352.html