数据库技巧

  |  手机版

收藏网站

投稿QQ:1745232315

IT专家网,汇聚专业声音 解析IT潮流 IT专家网,汇聚专业声音 解析IT潮流

网络

专家视点在现场环球瞭望
IT专家网 > 数据库子站 > 数据库技巧

在SQL Server 2005中如何列出所有存储过程

作者:林善茂出处:IT专家网2008-10-07 10:06

  【IT专家网独家】对于数据库管理员来说,可以经常想了解一些之前未听说过的存储过程,特别是无文档类型的存储过程。或许是用这些存储过程,能够简化日常的数据管理。

  为了查找这些存储过程,你可以花时间在互联网搜索,查看一些你还未知道的存储过程,也许在一两个小时您可能会发现你想要...也许你很幸运的找到,其他人在他们的文章中列出所有的存储过程 ,函数和视图,并介绍了如何使用这些存储过程。

  但其实,您可以在一分钟之内就可以自己列出这些存储过程、函数和视图的清单!这份名单甚至包括SQL Server中所有无文档的存储过程。通过这个清单,你就可以确定你所想要找的存储过程。

  SQL Server 2005实际上保存了所有存储过程的列表,包括有文档的、无文档的,甚至是用户自定义的!所有这些信息,都包含在系统表中。最简单的方法是使用一个系统视图,特别是sys.all_objects这个视图来查阅。

  您也可以使用sys.procedures目录视图,但我的测试结果,发现这个视图会过滤掉一些储存过程。

  您也可以使用系统储存过程sp_stored_procedures返回当前环境中的存储过程列表 ,但这个存储过程同样也限制了存储过程返回值。

  通过对比,我觉得:如果想获得SQL Server 2005中所有的储存程序,建议使用sys.all_objects这个系统视图,sys.Procedures或sp_Stored_Procedures这两个视图会因为某些未知原因,过滤掉一些内容,造成信息不全。

  存储过程信息是存储在各自用户数据库中的系统表中的。SQL Server 2005保存了存储过程的唯一标识信息,如存储过程的名称、创建时间、修改时间、是否来自微软等等。

  如何确保所有的用户数据库都能够自动创建这些存储过程呢?

  当SQL Server部署完成后,微软提供的存储过程,是保存在master数据库中的。当您新建一个数据库时,master数据库将作为模板数据库,因此,master数据库中的所有存储过程将自动创建到你所新建的数据库中。

  如果你想创建一个存储过程,并希望能够自动分发到所有的数据库中,你可以在master数据库中建立该存储过程,这样之后新创建的数据库中,将自动包含你新建的这个存储过程;但对于之前已经存在的数据库,你仍需要到每个数据库中手动创建这个存储过程。

  一、列出所有的储存过程

  以下代码列出了SQL Server 2005中存在的所有储存过程。


  USE [your_database_name_here];
  GO
  SELECT * FROM sys.all_objects
  WHERE ([type] = 'P' OR [type] = 'X' OR [type] = 'PC')
  ORDER BY [name];
  GO

  如果您已经安装了SQL Server 2005,并使用了所有的默认设置时,你将看到类似一下界面:

列出所有的存储过程

  图1:列出所有的存储过程

相关文章

关键词:SQLServer2005 存储过程 DBA 数据库管理员 技巧

责任编辑:李书琴

专题推荐

原创文章

微博互动

白皮书

网警备案