通过系统数据库获取用户所有数据库中的视图、表、存储过程_MsSql

复制代码 代码如下:

--设置sql 可以获取实例名称
sp_configure 'xp_cmdshell' , 1;
go
reconfigure;
go

--获取实例名
EXEC sys .xp_cmdshell 'sqlcmd -Lc'

--获取所有数据库
Select * FROM Master..SysDatabases order by Name

--获取数据库所有表
use yeekang ---数据库名称
select * from sysobjects where   type = 'U' order by name

--获取指定表字段
select * from syscolumns where id= OBJECT_ID('Userinfo' )

SELECT
表名 =case when a .colorder= 1 then d.name else '' end ,
表说明 =case when a .colorder= 1 then isnull(f .value, '') else '' end,
字段序号 =a. colorder,
字段名 =a. name,
标识 =case when COLUMNPROPERTY ( a .id, a.name ,'IsIdentity')= 1 then '√' else '' end ,
主键 =case when exists( SELECT 1 FROM sysobjects where xtype ='PK' and name in (
SELECT name FROM sysindexes WHERE indid in(
SELECT indid FROM sysindexkeys WHERE id = a .id AND colid =a. colid
))) then '√ ' else '' end,
类型 =b. name,
占用字节数 =a. length,
长度 =COLUMNPROPERTY( a.id ,a. name,'PRECISION' ),
小数位数 =isnull( COLUMNPROPERTY(a .id, a.name ,'Scale'), 0),
允许空 =case when a .isnullable= 1 then '√' else '' end,
默认值 =isnull( e.text ,''),
字段说明 =isnull( g.[value] ,'')

复制代码 代码如下:

FROM syscolumns a
left join systypes b on a. xusertype=b .xusertype
inner join sysobjects d on a. id=d .id and d .xtype= 'U' and d.name <>'dtproperties'
left join syscomments e on a. cdefault=e .id
left join sys. extended_properties g on a.id =g. major_id and a.colid =g. minor_id
left join sys. extended_properties f on d.id =f. major_id and f. minor_id=0
where a .id= OBJECT_ID('Userinfo' )
order by a. id,a .colorder

另一例:

在SQL Server数据库中每一个数据库都有一个sysobjects系统表,这个表里面存储了当前数据库的所有对象,包括对象表,用户表,视图,触发器,约束,默认值,日志,和存储过程的信。

先列一下这张表的一些字段名:

name  对象名
id       对象标识号
xtype  对象类型
uid      所有者对象的用户ID
parent_obj    父对象的对象标识号
crdate   对象的创建日期
ftcatid    为全文索引注册的所有用户表的全文目录标识符
schema_ver   版本号,
category  用于发布,约束和标识

看上上面的字段你应该已经清楚了吧...
xtype这个字段就是确定对象类型的...

如果你想获取数据库中所有的表信息,你可以写如下的查询语句:

复制代码 代码如下:

select * from sysobjects where xtype='u'

如果你想获取数据库中所有的存储过程的信息,你可以写如下的查询语句:

复制代码 代码如下:

select * from sysobjects where xtype='p'

如果你想获取数据库中所有的视图信息,你可以写如下的查询语句:

复制代码 代码如下:

select * from sysobjects where xtype='v'

如果你想获取数据库中所有的触发器信息,你可以写如下的查询语句:

复制代码 代码如下:

select * from sysobjects where xtype='tr'

获取SQL所有数据库名、所有表名、所有字段名

1.获取所有数据库名:

Select Name FROM Master..SysDatabases orDER BY Name

2.获取所有表名:

复制代码 代码如下:

Select Name FROM DatabaseName..SysObjects Where XType='U' orDER BY Name

XType='U':表示所有用户表;

XType='S':表示所有系统表;

3.获取所有字段名:

复制代码 代码如下:

Select Name FROM SysColumns Where id=Object_Id('TableName')

方法二。

复制代码 代码如下:

select   *   from   sys.databases    
select   *   from   information_schema.tables  
select   *   from   information_schema.columns where table_name='tablename'

时间: 2024-09-18 13:14:20

通过系统数据库获取用户所有数据库中的视图、表、存储过程_MsSql的相关文章

数据库某个用户设置只能访问某个视图,但是视图删除后重新建立,该用户就不能再次访问此视图

问题描述 数据库某个用户设置只能访问某个视图,但是视图删除后重新建立,该用户就不能再次访问此视图.由于某些原因,可能视图需要删除重新建立,有什么方法让设置权限的用户再次访问删除后建立的视图,视图名称都是一样的. 解决方案 解决方案二:在删除视图并重建的时候,重新执行一段grant授权访问视图的脚本.解决方案三:引用1楼guwei4037的回复: 在删除视图并重建的时候,重新执行一段grant授权访问视图的脚本. 问题是不知道用户名,用户名是别人指定的.解决方案四:你在删除视图之前,先查查哪些用户

在Web用户控件中引用样式表中样式的方法_实用技巧

如何在Web用户控件中引用样式表中的样式 复制代码 代码如下: <%@ Control Language="C#" AutoEventWireup="true" CodeFile="gl1.ascx.cs" Inherits="admin_gl1" EnableTheming="True" %> < link href="../App_Themes/qiantai.css&quo

entityframework- ef中的视图和存储过程的交互方式

问题描述 ef中的视图和存储过程的交互方式 我想对于多表查询先通过存储过程或者试图来查询数据,有什么比较好的方式 解决方案 ef中默认就支持视图和存储过程,存储过程映射为函数,视图映射为类似表一样的数据源.

浅析SQL Server中包含事务的存储过程_MsSql

先来看一个概念: 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完整地执行,要么完全地不执行.那么在存储过程里添加事务,则可以保证该事务里的所有sql代码要么完全执行要么完全不执行. 举个简单的带事务的存储过程: Begin Set NOCOUNT ON; --不返回影响行数 Set XACT_ABORT ON; --使用存储过程执行事务需要开启XACT_ABORT参数(默认为OFF) delete from table1 where n

清空所有表中的数据的存储过程_MsSql

复制代码 代码如下: --******************************************************* --* 清空所有表中的数据 * --* 撒哈拉大森林 * --* 2010-6-28 * --******************************************************* if exists (select * from sysobjects where type='P' and name=N'P_DeleteAllData'

机房收费系统:(三)SQLSever中自增长ID问题

       在本次机房收费系统中,数据库的用户增加过程中需要将每个增加的用户给一个自增长的序列号,这就考虑到数据库和VB的交互过程,甚至我们会遇到在写数据库程序的时候,经常会需要获取某个表中的最大序号数,查询资料找了几个方法,解决问题. 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的.但在多线程情况下,就不行了. (1) getGeneratedKeys()方法:      程序片断:         Connection conn=...;

复杂系统中的用户权限数据库设计解决方案_数据库其它

B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台计算机都已具备的,如果不建立一个完整的权限检测,那么一个"非法用户"很可能就能通过浏览器轻易访问到B/S系统中的所有功能.因此B/S业务系统都需要有一个或多个权限系统来实现访问权限检测,让经过授权的用户可以正常合法的使用已授权功能,而对那些未经授权的"非法用户"将会将他们彻底的"拒之门外&

数据库出现漏洞可获取用户ROOT权限

数据库是在科技界最流行的产品了,所有大型的科技巨头都是它们的主要客户,包括,雅虎.Facebook.谷歌.Netflix.推特.eBay等. 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式.数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用.

SQL Server常见错误(1)“无法打开用户默认数据库,登录失败” (2)系统密码改变后无法启动SQLServer

server|sqlserver|错误|数据|数据库 无法打开用户默认数据库,登录失败,这也是SQL Server使用者熟悉的问题之一.在使用企业管理器.查询分析器.各类工具和应用软件的时候,只要关系到连接SQL Server数据库的时候,都有可能会碰到此问题,引起此错误发生的原因比较多,下面我们就来详细分析引起此问题的原因以及解决办法. 一.原因登录帐户的默认数据库被删除. 二.解决方法:(一).使用管理员帐户修改此帐户的默认数据库1.打开企业管理器,展开服务器组,然后展开服务器2. 展开"安