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'))
在应用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中建立带有数据库名参数的系统存储过程来解决这一问题
分享到:
相关推荐
支持所有SQLServer数据类型,一键导出。 由于时间有限,现只能实现字段和主键的导出, 外键及其他约束不能导出,需另行处理,请知悉。 导出效果: USE [MyTest] GO CREATE TABLE [dbo].[tbl_Vendor] ( [VendorID] ...
【赛迪网-IT技术报道】SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应。 3、没有...
数据类型是数据的一种属性,表示数据所表示信息的类型。任何一种计算机语言都定义了自己的数据类型。当然,不同的程序语言都具有不同的特点,所定义的数据类型的各类和名称都或多或少...SQLServer提供了25种数据类型:
sql server学习资料 创建一个数据表时主要包括以下几个组成部分: 1 字段名(列名):字段...当定义表时,需要为表中的每一个字段设置一个数据类型,用来指定字段所存放的数据是整数、字符串、货币或是其它类型的数据。
SQL Server开发过程中,为了传入数据集类型的变量(比如接受C#中的DataTable类型变量),需要定义“用户自定义表类型”,通过“用户自定义表类型”可以接收二维数据集作为参数,在需要修改“用户自定义表类型”的...
在 SQL Server 2000 中,数据表的建立和删除是指创建或删除数据库中的表格。常用的数据表的建立和删除命令有: * `CREATE TABLE 数据表名称 (字段 1 类型 1(长度), 字段 2 类型 2(长度) …… )` * `DROP TABLE 数据...
介绍就不多说了,下边是部分目录,觉得有用的话就顶一个 C:. │ sqlserver2000.txt │ ├─第01章 │ 1.9.1 设置内存选项.sql │ 1.9.2(2) 使用文件及文件组.sql │ 1.9.2(3) 调整...
文档生成工具将根据您的表定义和字段定义读取字典表中的信息并将这些信息按照您定义的方式生成数据库设计文档。生成方式采用写流方式生成,生成速度快,免去您编写数据库文档的麻烦。 13、备份、还原、收缩数据库...
更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。 语法 sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name' [ , [ @objtype = ] 'object_type' ] --假设要处理的表名为...
第三种使用的方法是sql server中的表值参数方法,表值参数是 SQL Server 2008 中的新参数类型。表值参数是使用用户定义的表类型来声明的。使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或...
E-R 图转换为关系模型时,需要将实体转换为关系,属性转换为字段,实体之间的关系转换为表之间的关系。 SQL Server 2014 数据库管理系统 SQL Server 2014 数据库管理系统是一个强大的关系数据库管理系统,由 ...
未及时包括在本自述文件中的任何有关 SQL Server 2005 和 SQL Server Express 的信息都将发布到 Microsoft 知识库文章 907284 中。 [顶部] 3.0 安装问题 本部分详细介绍此版本中的安装问题。 3.1 现有的 SQL ...
如下是一个简化的员工考勤应用E-R图,请在SQL Server中创建名为YQKG的数据库,包括两个数据文件,一个日志文件,文件名按SQL Server对象命名规范定义,数据文件按10%的比例增长,数据库定义完成后输入如下样本数据。...
--sqlDataCompare ...也许你有一张很大的表,但是有些字段你无法记得清楚,你不必去SQL Server左侧的服务器资源管理器查看这张打表的结构。 详情请见 http://blog.csdn.net/dxh_0829/article/details/7890245
1.支持SQL SERVER 2000、2005、2008 2.功能菜单包含新建连接、打开SQL代码、保存SQL代码、载入数据架构、 执行编辑区代码、终止编辑区代码、分析编辑区代码、导出数据到EXCEL 3.数据架构菜单包含相关查询、添加、...
首先,打开SQL Server Management Studio,输入一个查询语句,然后查看SqlServer如何显示查询计划。例如,输入以下查询语句: select v.OrderID, v.CustomerID, v.CustomerName, v.OrderDate, v.SumMoney, v....
表是 SQL Server 中最常见的数据存储结构。它由一系列有序的行和列组成,用于存储数据。每个表有一个名称,并且由一个或多个列组成。 列(Column): 列是表中的一个数据字段,用于存储特定的数据类型。列定义了表中...
表是 SQL Server 中最常见的数据存储结构。它由一系列有序的行和列组成,用于存储数据。每个表有一个名称,并且由一个或多个列组成。 列(Column): 列是表中的一个数据字段,用于存储特定的数据类型。列定义了表中...
5.7.4 在SQL Server中跟踪命令的执行 5.7.5 终止服务器进程 第6章 使用SQL Server Management Studio配置SQL Server 6.1 使用SQL Server Management Studio管理配置 6.2 确定系统和服务器信息 6.3 配置身份验证和...
9.5.1 SQL Server中的文件存取方法 290 9.5.2 程序中的文件存取处理方法 292 第 10 章 作业 295 10.1 作业概述 295 10.1.1 定义作业 295 10.1.2 使用系统存储过程定义作业的常用模板 300 10.2 ...