*SQL Server系统表的应用
在应用SQL Server的基于客户机/服务器体系结构的信息系统开发中,有时需要将后台SQL Server上的某一数据库的表结构都打印出来,以便于开发人员查阅及最终文档的形成。SQL Server本身提供了一个系统存储过程(SP_COLUMNS),可以完成对单个表结构的查询,只要在 SQL Server的ISQL-W工具中键入SP_COLUMNS “表名”,并执行即可得到结果集。但该方法有许多不足之处,其主要缺点是:
1) 只能对单表进行操作,当需要查询一个数据库中所有的表时,需要多次执行SP_COLUMNS ,因此显得非常繁琐。
2) 查询结果集中包含了许多不必要的信息。
下面我们创建一个存储过程来完成对某一个数据库中所有表结构的查询。
在创建一个数据库的同时,系统会自动建立一些系统表,限于篇幅的缘故我们在这里只介绍与应用实例有关的三个系统表(SYSOBJECTS,SYSCOLUMNS,SYSTYPES)及其相关的字段。
表SYSOBJECTS为数据库内创建的每个对象(约束,规则,表,视图,触发器等)创建一条记录。
该表相关字段的含义如下:
SYSOBJECTS.name 对象名,如:表名,视图名。
SYSOBJECTS.id 对象id。
SYSOBJECTS.type 对象类型(p存储过程,v视图,s系统表,u用户表)。
表SYSCOLUMNS 为每个表、视图中的每个列和每个存储过程的每个参数创建一条记录。
该表相关字段的含义如下:(此处的列系指数据库中每个表、视图中的列)
SYSCOLUMNS. id 该列所属的表的id,可与SYSOBJECTS.id相关联
SYSCOLUMNS.colid 列id,表示该列是表或视图的第几列。
SYSCOLUMNS.type 物理存储类型,可与SYSTYPES.type相关联。
SYSCOLUMNS.length 数据的物理长度。
SYSCOLUMNS.name 列名字,即字段名。
SYSCOLUMNS .Pre 列的精度级。
SYSCOLUMNS .Scale 列的标度级。
表SYSTYPES 为每个系统和每个用户提供的数据类型创建一条记录,如果它们存在,给定域和默认值,描述系统提供的数据类型的行不可更改。
该表相关字段的含义如下:
SYSTYPES.name 数据类型的名字。
SYSTYPES.type 物理存储数据类型。
在SQL SERVER的企业管理器(SQL ENTERPRISE MANAGER)中,选定某一数据库,创建存储过程print_dbstructure。
源代码如下:
if exists (select * from sysobjects where id = object_id('dbo. print_dbstructure
') and sysstat & 0xf = 4) 存储过程
drop procedure dbo. print_dbstructure
GO
CREATE PROCEDURE print_dbstructure
AS
SELECT DISTINCT sysobjects.name, syscolumns.colid,
syscolumns.name, systypes.name, syscolumns.prec, syscolumns.scale
FROM syscolumns, sysobjects, systypes
WHERE sysobjects.id = syscolumns.id AND systypes.type = syscolumns.type AND ((sysobjects.type='u'))
GO
首先判断是否存在一个名为print_dbstructure的存储过程,如果存在,就摘除它,否则,定义SQL语句建立新的存储过程。从三个系统表中选出满足条件的记录(即该数据库中保存在系统表中的用户表信息)。
执行时,在ISQL_W工具中,选定print_dbstructure所在的数据库,执行该存储过程,即可得到结果集(即该数据库中用户表的结构信息)。
SQL Server系统表的推广应用
以上所介绍存储过程的主要缺陷在于只能对服务器上某一特定的数据库(print_dbstructure所在的数据库)进行查询操作,我们可以通过在SQL Server系统数据库MASTER中建立带有数据库名参数的系统存储过程来解决这一问题
转载于:https://www.cnblogs.com/dwjaissk/archive/2006/07/25/459190.html
*SQL Server系统表的应用相关推荐
- SQL SERVER系统表
系统表查看 SQL SERVER系统表在系统数据库master中,其实确切的说这些系统表是视图,可以在master库下的视图下查看 常用系统表及功能 sysaltfiles 主数据库 保存数据库的文件 ...
- SQL Server系统表sysobjects介绍与使用
关于SQL Server数据库的一切信息都保存在它的系统表格里.我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格.但是,你可能需要偶尔做一点不同寻常的事,例如数据库所有的触发器.你可 ...
- sql server系统表详细说明(二)(摘)
sysaltfiles 在特殊情况下,包含与数据库中的文件相对应的行.该表存储在 master 数据库中. 列名 数据类型 描述 fileid smallint 每个数据库的唯一文件标识号. grou ...
- sql server系统表详细说明(转)
sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库字符集与排序顺序 sysconfigures 主数据库 配置选项 syscurconfigs 主数据库当前配置选 ...
- sql server 系统表 介绍
sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库字符集与排序顺序 sysconfigures 主数据库 配置选项 syscurconfigs 主数据库当前配置选 ...
- SQL Server 系统表介绍:sys.dm_exec_sessions
针对 SQL Server 上的每个经过身份验证的会话返回一行.sys.dm_exec_sessions 是服务器范围的视图,显示了有关所有活动用户连接和内部任务的信息.此信息包含客户端版本.客户端程 ...
- 2.SQL SERVER笔记——SQL SERVER系统概念
2.SQL SERVER笔记--SQL SERVER系统概念 系统数据库 数据库管理员(DBA)的一项基本的技能是对SQL数据库引擎的系统数据库的深刻理解.数据库开发人员了解SQLSERVER自带的系 ...
- sql server2008系统表详细说明sys.开头的表
sql server2008系统表详细说明sys.开头的表 一.库里有多少个表,表名等 select * from INFORMATION_SCHEMA.TABLES 二.查询表.字段.类型.是否主键 ...
- 应用事件探查器优化SQL Server系统[转]
应用事件探查器优化SQL Server系统 关键词:Mssql,,概述 当你的SQL Server数据库系统运行缓慢的时候,你或许多多少少知道可以使用SQL Server Profiler(中文叫SQ ...
- php从注册列表卸载,MSSQL_彻底删除SQL Server注册表的方法,一般在卸载完数据库时,大家 - phpStudy...
彻底删除SQL Server注册表的方法 一般在卸载完数据库时,大家都希望能够将注册表信息完全删干净,下面就将教您彻底删除SQL Server注册表的方法,供您参考. 在卸载SQL Server开始- ...
最新文章
- 【AI】caffe使用步骤(一):将标注数据生成lmdb或leveldb
- Nature子刊:改进宏基因组的分箱和组装的新方法
- CCF 2015年题目题解 - Python
- 常见Web技术之间的关系,你了解多少?
- controller 有两种写法,讨论一下两种写法的区别:
- UNIX网络编程:unpv13e编译错误:net/if_dl.h:没有那个文件或目录
- js和php中几种生成验证码的方式
- oracle开发的小技巧(原创)
- 阿里 java ide_纯JAVA版JAVA IDE环境(源码)
- 告诉你一个真实的全球化
- PRML第三章3.3贝叶斯线性回归
- Visual Basic从入门到精通pdf
- Beyond Compare设置默认编码、每行字符个数、自动换行
- excel php 数字科学计数_PHP导出excel时数字变为科学计数的解决方法
- iOS/iPhone 微信打开doc xls文件报错OfficeImportErrorDomain错误912 打不开文档
- vue H5页面调用手机相机拍照/图库上传
- 推荐几个财富自由大佬的公众号
- Vulkan_间接绘制(vkCmdDrawIndexedIndirect)
- React Native 0.44.3 ----------微信h5支付
- Macbook百度网盘不限速下载
热门文章
- yolov4-tiny目标检测模型实战——学生姿势行为检测
- python基于内置的SimpleHTTPServer来搭建简易的FTP服务器实现局域网内文件共享
- python求解LeetCode习题Find the First Missing Positive Number
- java 数据类型 date_Java 数据类型之 Date 数据类型
- 为什么使用事务?如何实现声明式事务?
- Java面试题及答案2019_一般JAVA面试题及答案解析2019
- SpringMVC学习(三)RestFul风格
- idea中本地git如何切换分支
- 怎么调用获取被创建的预制体_PostgreSQL为每一个backend创建的cache
- JDBC学习(八、获取自动生成的主键和大数据类型操作)