2005每日一学] 元数据视图(7)

SQLServer_2005 2006-08-08 10:05:10


SQL Server 2005 数据库引擎 引入了两组新的视图来查询元数据。系统目录视图提供有关对象的信息,如 SQL Server 数据库中定义的表、存储过程和约束。动态管理视图提供有关数据库引擎 实例当前状态的信息。动态管理视图显示不保留到磁盘的关于内存结构的信息,如有关锁、线程和任务的信息。

SQL Server 2005 系统目录为 SQL Server 数据库提供此信息。SQL Server 2005 系统目录的核心是一个视图集,这些视图显示了描述 SQL Server 实例中的对象的元数据。元数据是描述系统中对象属性的数据。基于 SQL Server 的应用程序可以使用以下方式访问系统目录中的信息:
• 目录视图。建议使用这种访问方法。
• 信息架构视图。
• OLE DB 架构行集。
• ODBC 目录函数。
• 系统存储过程和函数。


SQL Server 2005 引入了目录视图,将其作为系统目录元数据的全新关系界面。通过这些视图可以访问服务器上各数据库中存储的元数据。
注意:

目录视图不提供对复制、SQL Server 代理或备份元数据的访问。
建议使用目录视图访问元数据,原因如下:
• 所有元数据都作为目录视图提供。
• 目录视图以一种独立于所有目录表实现的格式来表示元数据,因此,不受基础目录表变化的影响。
• 目录视图是访问核心服务器元数据的最有效的方式。
• 目录视图是目录元数据的常规界面,提供了获取、转换以及表示此自定义形式的元数据的最直接的方式。
• 目录视图名称和它们的列名称是说明性的。查询结果将与具备该功能(与正被查询的元数据相对应)中等知识的用户期望一致。


由于涉及的内容过多,只举几个例子,更多内容参见“Books Online"

实例:

1:判断某表是否存在IDENTITY列

IF EXISTS(
SELECT 1 FROM SYS.IDENTITY_COLUMNS
WHERE OBJECT_ID=OBJECT_ID('TableName')
)
PRINT 'exists identity column'
ELSE
PRINT 'not exists identity column'

2:查看某存储过程的参数

SELECT a.name AS '参数名',
b.name AS '类型',
a.max_length AS '长度',
a.precision AS '精度',
a.scale AS '小数位数',
CASE WHEN a.is_output=0 THEN 'input' ELSE 'output/return' END AS '输入输出类型',
CASE WHEN a.has_default_value=0 THEN 'no' ELSE 'yes' END AS '是否具有默认值',
a.default_value AS '默认值'
FROM SYS.PARAMETERS a
JOIN SYS.TYPES b
ON a.user_type_id=b.user_type_id
WHERE a.OBJECT_ID=OBJECT_ID('ProcedureName')

3:判断某表是否存在外键

IF EXISTS(
SELECT 1 FROM SYS.FOREIGN_KEYS
WHERE PARENT_OBJECT_ID=OBJECT_ID('')
)
PRINT 'exists'
ELSE
PRINT 'not exists'


更多详细资料参考“Books Online"

以往帖子:
[2005每日一学]DDL触发器(1)
http://community.csdn.net/Expert/topic/4910/4910909.xml?temp=.5234644
2005每日一学]XML数据类型(2)
http://community.csdn.net/Expert/topic/4913/4913373.xml?temp=.579159
2005每日一学]排名函数(3)
http://community.csdn.net/Expert/topic/4918/4918884.xml?temp=.3263056
2005每日一学]APPLY运算符(4)
http://community.csdn.net/Expert/topic/4921/4921633.xml?temp=.4351465
2005每日一学]使用大值数据类型(5)
http://community.csdn.net/Expert/topic/4923/4923551.xml?temp=.471081
2005每日一学]数据库引擎错误处理(6)
http://community.csdn.net/Expert/topic/4926/4926663.xml?temp=.5996057

...全文
378 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gawz 2006-08-29
  • 打赏
  • 举报
回复
Mark~
thanks~
ivorxiao 2006-08-25
  • 打赏
  • 举报
回复
好人,好贴,好人贴好贴
china_likaiwu 2006-08-22
  • 打赏
  • 举报
回复
好贴!感谢!
yangys 2006-08-21
  • 打赏
  • 举报
回复
顶!
CACACACACA 2006-08-21
  • 打赏
  • 举报
回复
MARK
欧洲之星 2006-08-18
  • 打赏
  • 举报
回复
好帖顶
hufeili 2006-08-18
  • 打赏
  • 举报
回复
Thanks!
hychieftain 2006-08-17
  • 打赏
  • 举报
回复
好贴
wisdomone 2006-08-17
  • 打赏
  • 举报
回复
好,虽然我现学SQLSERVER2K,也学不少东东,谢
nhlangzi 2006-08-08
  • 打赏
  • 举报
回复
顶啊 好哦
simonhehe 2006-08-08
  • 打赏
  • 举报
回复
:)

6,129

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 新技术前沿
社区管理员
  • 新技术前沿社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧