当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-01-25 23:11:00  来源:本站整理

对SQL表构造的查询[MSSQL防范]

赞助商链接



  本文“对SQL表构造的查询[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

假如需求对SQL表构造举行查询,利用存储历程便可以实现,下面就会对该办法举行具体的阐明,但愿对您学习SQL表构造方面有所启迪.

在利用SQL Server的基于客户机/服务器体系构造的信息系统开辟中,有时需求将后台SQL Server上的某一数据库的表构造都打印出来,以便于开辟人员查阅及终究文档的形成.SQL Server本身供应了一个系统存储历程 (SP_COLUMNS),可以完成对单个SQL表构造的查询,只要在SQL Server的ISQL-W工具中键入SP_COLUMNS “表名”,并履行即 可得到后果集.

但该办法有很多不足之处,其主要缺陷是:
1) 只能对单表举行操作,当需求查询一个数据库中全部的表时,需求多次履行SP_COLUMNS ,因此显得非常烦琐.
2) 查询后果集合包含了很多不必要的信息.
下面我们成立一个存储历程来完成对某一个数据库中全部SQL表构造的查询.
在成立一个数据库的同时,系统会自动成立一些系统表,限于篇幅的来由我们在这里只介绍与利用实例有关的三个系统表(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.
源代码以下:

  1. if exists (select * from sysobjects where id = object_id('dbo. print_dbstructure  
  2. ') and sysstat & 0xf = 4) 存储历程  
  3. drop procedure dbo. print_dbstructureGO  
  4. CREATE PROCEDURE print_dbstructureAS  
  5. SELECT DISTINCT sysobjects.name, syscolumns.colid,  
  6. syscolumns.name, systypes.name, syscolumns.prec, syscolumns.scale  
  7. FROM syscolumns, sysobjects, systypes  
  8. WHERE sysobjects.id = syscolumns.id AND systypes.type = syscolumns.type AND ((sysobjects.type='u'))  
  9.  
  10. GO  

首先判断能否存在一个名为print_dbstructure的存储历程,假如存在,就摘除它,不然,定义SQL语句成立新的存储历程.从三个系统表中选出满意条件的记录(即该数据库中保存在系统表中的用户表信息).
履行时,在ISQL_W工具中,选定print_dbstructure所在的数据库,履行该存储历程,便可得到后果集(即该数据库顶用户表的构造信息).

<
  以上是“对SQL表构造的查询[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 针对SQL INJECTION的SQL SERVER安全设置初级篇
  • 巧对sql server外键重命名
  • 对SQL表构造的查询
  • 针对SQL Server表的只读权限分配
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .