找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 9316|回复: 15

[数据库知识] SQL SERVER系统存储过程、系统表

[复制链接]
  • 打卡等级:无名新人
  • 打卡总天数:5
  • 打卡月天数:3
  • 打卡总奖励:20
  • 最近打卡:2024-11-13 21:14:02
发表于 2005-7-5 10:02:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
本帖最后由 stonys 于 2011-3-14 18:49 编辑

第四节
系统存储过程、系统表

4.1
系统存储过程


系统存储过程是SQLServer内置的具有强大功能的存储过程,系统存储过程一般都是以SP_开始的,应尽可能利用已有的系统存储过程来实现操作目标(可以将系统存储过程简单的理解为是SQLServer的辅助工具)。

以下列出一些比较常用的系统存储过程:

系统存储过程的名字

作用

sp_attach_db

将数据库附加到服务器

sp_attach_single_file_db

将只有一个数据文件(就是以.mdf为扩展名的文件)的数据库附加到当前服务器

sp_detach_db

从服务器分离数据库

sp_helptext

显示规则、默认值、未加密的存储过程、用户定义函数、触发器或视图的文本

sp_executesql

执行可以多次重用或动态生成的 Transact-SQL 语句或批处理,Transact-SQL 语句或批处理可以包含嵌入参数

关于系统存储过程,在SQLServer联机帮助 Transact-SQL 参考 系统存储过程, 概述”中有详细介绍。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com[img][/img]

4.2
系统表


系统表也是一种数据库中的表,是由系统自动创建维护的,用户通常在系统表中得到很多有用信息。

这里重点讲解两个系统表:sysdatabases表和sysobjects表,其他系统表的介绍请参看附录和联机帮助。

      

4.2.1
sysdatabases
系统表


sysdatabases系统表存在于master库内,Microsoft&reg; SQL Server&#8482; 中的每个数据库在该表中占一行,该表比较常用的两个字段是name字段(代表数据库的名称),dbid字段(代表数据库 ID,这个字段在后面的SQLServer事件探查器的筛选操作时会用到)


SQLServer查询分析器中执行一下语句,找出数据库名字为UFSystem的数据库ID


select dbid,* from master..sysdatabases where name = 'ufsystem'

4.2.2
sysobjects
系统表


sysobjects系统表存在于每个用户自建的数据库中,在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行,该表常用的字段有xtype字段(代表对象类型,常用的类型有:U = 用户表、P = 存储过程、TR = 触发器、V = 视图、D = 默认值或 DEFAULT 约束),name字段(代表对象名,如表名、存储过程名)


SQLServer查询分析器中执行一下语句,找出表名字为au开头的用户自定义表:


select name from pubs..sysobjects where xtype = 'u' and name like 'au%'


其中的'%'是通配符。

4.2.3
sysobjects
系统表的高效使用方法


如果要查找一个指定名字的触发器所依赖的表,那么利用sysobjects系统表可以快速实现该需求。


如:pubs库中有个名字是employee_insupd的触发器(这个名字很有可能是被后面讲的事件探查器跟踪出来的结果),若想查询该触发器是依赖于哪个表时,以下的语句非常有用。


检索出指定数据库中所有的触发器名字:

select * from pubs..sysobjects where xtype = 'tr'


根据触发器的具体名字,查出它所依赖的表:


select object_name(parent_obj) as 表名 from pubs..sysobjects where xtype = 'tr' and name = 'employee_insupd'


上句中的object_name( )是个系统函数,作用是将对象ID转换为对应的对象名。Object_ID( )作用与之相反。

本章小结

通过本章与上一章的学习,对SQL语句的用法及数据库系统表结构有了框架性的了解,为SQL Server其他功能的应用提供了基础,但在工作过程中,还要根据实际遇到的问题,对本部分所涉及知识进行更深入的研究,才能使SQL语句的功能得到更灵活、全面的应用。

发表于 2005-12-7 13:53:19 | 显示全部楼层
<>就完了??好快啊</P>
发表于 2006-1-17 15:44:53 | 显示全部楼层
我明白了,我学不会基础,所以高级应用也不会,嘻
发表于 2006-5-10 12:18:36 | 显示全部楼层
<FONT face=隶书 color=#ff0066 size=6>我连基础滴皮毛滴皮毛都还米弄清楚啊!真是有点丢人!嘿嘿</FONT>
发表于 2006-12-13 08:50:39 | 显示全部楼层
对我的工作有很大帮助,当然对我个人也是提高!
发表于 2006-12-15 12:20:57 | 显示全部楼层
very good,thank you
发表于 2007-7-25 12:31:32 | 显示全部楼层
对我的工作有很大帮助,当然对我个人也是提高
本贴来自www.oyonyou.com,原贴地址:https://www.oyonyou.com/viewthread.php?tid=170
发表于 2007-9-15 09:19:09 | 显示全部楼层
先谢绝楼主的无私奉献!!!!!!!!!!!!!!
发表于 2008-4-19 11:16:12 | 显示全部楼层
先谢绝楼主的无私奉献!!!!!!!!!!!!!!
  • 打卡等级:无名新人
  • 打卡总天数:1
  • 打卡月天数:1
  • 打卡总奖励:3
  • 最近打卡:2024-11-15 13:24:58
发表于 2008-5-1 10:42:08 | 显示全部楼层
太辛苦了  老大
发表于 2009-12-2 23:02:03 | 显示全部楼层
好好学学  谢版主
发表于 2010-1-8 08:27:58 | 显示全部楼层
谢谢楼主分享
发表于 2010-1-11 11:43:45 | 显示全部楼层
晕死,这也算是高级应用
发表于 2010-1-21 17:34:51 | 显示全部楼层
学习,sysobject表一直有些模糊,今天知道些了
发表于 2010-1-21 18:43:43 | 显示全部楼层
感激楼主的好心分享
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-11-26 02:28 , Processed in 0.074184 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表