sql server 查看或删除所有视图、存储过程
1、列出所有视图
SELECT Name,视图名字 Definition 视图内容 FROM sys.sql_modules AS m INNER JOIN sys.all_objects AS o ON m.object_id = o.object_id WHERE o.[type] = ’v’
2、删除视图
USE 数据库名 declare mycur cursor local for select [name] from dbo.sysobjects where xtype=’V’  声明游标 declare @name varchar(100)   OPEN mycur    打开游标   FETCH NEXT from mycur into @name   WHILE @@FETCH_STATUS = 0    BEGIN exec(’drop VIEW ’ + @name) FETCH NEXT from mycur into @name   逐条读取 END   CLOSE mycur   关闭游标
3、利用Sql语句查询数据中的所有存储过程
a、利用sysobjects系统表,
在这个表中,在数据库中创建的每个对象(例如约束、默认值、日志、规则以及存储过程)都有对应一行,我们在该表中筛选出xtype等于P的所有记录,就为数据库中的存储过程了。 示例语句如下:
select * from sysobjects where xtype=''''''''P''''''''
注意:在SQL SERVER2005中,出现了sys.objects目录视图来代替sysobjects系统表,我们在SQL SERVER2005及以后的版本中,可以使用sysobjects系统表与sys.objects目录视图的任意对象来查询所有存储过程。
但在sys.objects中,xtype列已经被type列代替,即在SQL SERVER2005及以后的版中可用以下代码来查询数据库中所有存储过程: select * from sys.objects where type=''''''''P''''''''
两个的差别是X,xtype换成type。
b,利用sys.procedures目录视图
sys.procedures目录视图,每个存储过程都会在返回结果集中占一行. 示例语句如下: select * from sys.procedures
4、删除存储过程
USE 数据库名 declare mycur cursor local for select [name] from dbo.sysobjects where xtype=’P’ declare @name varchar(100)   OPEN mycur   FETCH NEXT from mycur into @name   WHILE @@FETCH_STATUS = 0    BEGIN exec(’drop PROCEDURE ’ + @name) FETCH NEXT from mycur into @name END   CLOSE mycur
 
5,
( 一)利用Sql语句查询数据库中的所有表
1,利用sysobjects系统表 在这个表中,在数据库中创建的每个对象(例如约束、默认值、日志、规则以及存储过程)都有对应一行,我们在该表中筛选出xtype等于U的所有记录,就为数据库中的表了。 示例语句如下::
select * from sysobjects where xtype=''''''''U''''''''
注意:在SQL SERVER2005中,出现了sys.objects目录视图来代替sysobjects系统表,我们在SQL SERVER2005及以后的版本中,可以使用sysobjects系统表与sys.objects目录视图的任意对象来查询所有表。
2,利用sys.tables目录视图 sys.tables目录视图,为每个表对象返回一行. 示例语句如下: select * from sys.tables
注意:sys.tables目录视图也只有在SQL SERVER2005及以上的版本中才能使用。
3,利用存储过程sp_tables sp_tables存储过程,可返回可在当前环境中查询的对象列表。这代表可在FROM子句中出现的任何对象。 我们可以执行如下语句: exec sp_tables
在结果集中筛选出所有TABLE_TYPE等于TABLE的记录就是表信息了。
(二)利用Sql语句查询数据中的所有存储过程(重复3)
1,利用sysobjects系统表 在这个表中,在数据库中创建的每个对象(例如约束、默认值、日志、规则以及存储过程)都有对应一行,我们在该表中筛选出xtype等于P的所有记录,就为数据库中的存储过程了。 示例语句如下:
select * from sysobjects where xtype=''''''''P''''''''
注意:在SQL SERVER2005中,出现了sys.objects目录视图来代替sysobjects系统表,我们在SQL SERVER2005及以后的版本中,可以使用sysobjects系统表与sys.objects目录视图的任意对象来查询所有存储过程。
但在sys.objects中,xtype列已经被type列代替,也就是说,在SQL SERVER2005及以后的版中可以使用以下代码来查询数据库中所有存储过程。 select * from sys.objects where type=''''''''P''''''''
2,利用sys.procedures目录视图 sys.procedures目录视图,每个存储过程都会在返回结果集中占一行. 示例语句如下: select * from sys.procedures
注意:sys.procedures目录视图也只有在SQL SERVER2005及以上的版本中才能使用。 |