《SQL Server的系统表及其物理应用研究.docx》由会员分享,可在线阅读,更多相关《SQL Server的系统表及其物理应用研究.docx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、SQLServer的系统表及其物理应用研究SQLServer的系统表及其物理应用研究1.SQLServer的系统表Microsoft的SQLServer是一个可伸缩的高性能数据库管理系统,专为分布式客户机/服务器环境而设计,SQLServer几乎将所有的配置信息、安全性信息和对象信息都存储在了它本身的系统表中,而系统表存在于每个独立的数据库中,存储一个特定数据库对象信息的系统表通常称为数据库目录,MASTER数据库有其特有的系统表用于保存整个系统和所有数据库的信息,通常称为服务器目录或系统目录。?服务器上所有的数据库包括MODULE,MASTER等都含有18个具有一样名称、构造的系统表,如表S
2、YSOBJECTS用于描绘数据库中的对象棗表、视图、存储经过等,表SYSUSER用于描绘数据库的用户,而MASTER数据库另外还有13个单独的全局系统表,如表SYSLOGINS用于保存每个服务器的登录名、口令和配置信息、表SYSDATABASE保存服务器上所有数据库名、所有者、状态及其他信息。?存储经过是内嵌于数据库中的程序代码,它与表、视图等一样是数据库的一个组成部分,不同于一般的外部程序代码,它是经过预编译处理的代码,因而具有运行速度快、效率高的特点,存储经过也是SQLServer的一个重要功能,很多单纯针对后台数据库的操作一般都交由存储经过来完成以提高系统效率。本文将给出一个存储经过来讲
3、明SQLServer系统表的应用。?2.SQLServer系统表的应用?在应用SQLServer的基于客户机/服务器体系构造的信息系统开发中,有时需要将后台SQLServer上的某一数据库的表构造都打印出来,以便于开发人员查阅及最终文档的构成。SQLServer本身提供了一个系统存储经过(SP_COLUMNS),能够完成对单个表构造的查询,只要在SLQServer的ISQL-W工具中键入SP_COLUMNS表名,并执行即可得到结果集。但该方法有很多缺乏之处,其主要缺点是:?1)只能对数据库中单个数据表进行操作,当需要查询一个数据库中所有的表时,需要屡次执行系统存储经过SP_COLUMNS,因而
4、显得非常繁琐。?2)查询结果集中包含了很多不必要的信息,缺乏使用的灵敏性。?下面我们创立一个存储经过来完成对某一个数据库中所有表构造的查询。?在创立一个数据库的同时,系统会自动建立一些系统表,限于篇幅的缘故我们在这里只介绍与应用实例有关的三个系统表(SYSOBJECTS,SYSCOLUMNS,SYSTYPES)及其相关的字段。?表SYSOBJECTS为数据库内创立的每个对象(约束,规则,表,视图,触发器等)创立一条记录。?该表相关字段的含义如下:SYSOBJECTS.name对象名,如:表名,视图名。SYSONJECTS.id对象id。SYSOBJECTS.type对象类型(p存储经过,v视图
5、,s系统表,u用户表)。?表SYSCOLUMNS为每个表、视图中的每个列和每个存储经过的每个参数创立一条记录。?该表相关字段的含义如下:(此处的列系指数据库中每个表、视图中的列)SYSCOLUMNS.id该列所属的表的id,可与SYSOBJECTS.id相关联SYSCOLUMNS.colid列id,表示该列是表或视图的第几列SYSCOLUMNS.type物理存储类型,可与SYSTYPES.type相关联.SYSCOLUMNS.length数据的物理长度。SYSCOLUMNS.name列名字,即字段名。SYSCOLUMNS.Pre列的精度级。SYSCOLUMNS.Scale列的标度级。?表SYS
6、TYPES为每个系统和每个用户提供的数据类型创立一条记录,假如它们存在,给定域和默认值,描绘系统提供的数据类型的行不可更改。?该表相关字段的含义如下:?SYSTYPES.name数据类型的名字。SYSTYPES.type物理存储数据类型。?在SQLSERVER的企业管理器(SQLENTERPRISEMANAGER)中,选定某一数据库,创立存储经过print_dbstructure。?源代码如下:?ifexists(select*fromsysobjectswhereid=object_id(dbo.print_dbstructure)andsysstat0xf=4)存储经过?dropproce
7、duredbo.print_dbstructure?GO?CREATEPROCEDUREprint_dbstructure?AS?SELECTDISTINCTsysobjects.name,syscolumns.colid,?syscolumns.name,systypes.name,syscolumns.prec,syscolumns.scale?FROMsyscolumns,sysobjects,systypes?WHEREsysobjects.id=syscolumns.idANDsystypes.type=syscolumns.typeAND(sysobjects.type=u)?GO
8、?首先判定能否存在一个名为print_dbstructure的存储经过,假如存在,就摘除它,否则,定义SQL语句建立新的存储经过。从三个系统表中选出知足条件的记录(即该数据库中保存在系统表中的用户表信息)。?执行时,在ISQL_W工具中,选定print_dbstructure所在的数据库,执行该存储经过,即可得到结果集(即该数据库中用户表的构造信息)。?3.SQLServer系统表的应用推广?以上所介绍存储经过的主要缺陷在于只能对服务器上某一特定的数据库(print_dbstructure所在的数据库)进行查询操作,我们能够通过在SQLServer系统数据库MASTER中建立带有数据库名参数的系统存储经过来解决这一问题,请读者自行完成。当然,SQLServer系统表的应用远不止于止,读者可以依本文所介绍的方法去挖掘其他几个系统表的应用。SQLServer的系统表及其物理应用研究1.SQLServer的系统表Microsoft的SQLServer是一个可伸缩的高性能数据库管理系统,专为分布式客户机/服务器环境而设计,SQLServer几乎将所有的配置信息、安全性信息和对象信息都存储在了它本身的系统表中,而系统表存在于每个独立的推荐度: