SQLServer 2005 列所有存储过程的语句_mssql2005

为了查找这些存储过程,你可以花时间在互联网搜索,查看一些你还未知道的存储过程,也许在一两个小时您可能会发现你想要...也许你很幸运的找到,其他人在他们的文章中列出所有的存储过程 ,函数和视图,并介绍了如何使用这些存储过程。
但其实,您可以在一分钟之内就可以自己列出这些存储过程、函数和视图的清单!这份名单甚至包括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,并使用了所有的默认设置时,你将看到类似一下界面:
上面这个命令,通过Type对象进行过滤。从下表中,你可以确定自己所需的对象的类型,然后根据你的实际情况,调整WHERE子句中的类型。
此列表仅列出了意见,职能和程序。
二、用户自定义存储过程
在日常使用中,另一个字段“is_ms_shipped”也经常用来筛选记录。该字段用来判断存储过程是有微软发布的 ,如果最初是由微软发布的,则该字段的值为0; 如果不是由微软发布的,则该字段的值为1 。
在上面的T-SQL语句的基础上,您只要增加个限制条件“and [ is_ms_shipped ] = 0 ”,就可以找到不是微软创建的存储过程,这些或许是你或者第三方软件商访问数据库时创建的。如果您只想看看微软提供的储存过程,只要将值从0到1即可 。
下面举例说明,通过一个T-SQL代码演示如何获取只有用户定义的存储过程。 

复制代码 代码如下:

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

需要注意的是,这个语句的执行结果,因每个人的数据库的情况不同,而得到不同的记录列表。情况而异。执行之后,将看到类似下图的输出结果。
三、小结
通过上面的例子可以看到,通过少量代码,我们就可以很容易地、快速地获得自己所用的SQL Server 的存储过程列表,你不必在一个个网站中搜索这些存储过程了。你可能会学到一个之前自己花了很大精力编写的复杂脚本,现在直接用一个存储过程就可以实现同样的效果了。
请记住,当使用一个不能确定来源或结果的存储过程,应该在测试系统先验证; 从来没有使用任何没有得到彻底的测试在生产环境中。
本文只是告诉各位可以用来获得SQL Server 2005中所有存储过程的方法,但不是鼓励你随意使用任何类型的存储过程,特别是无文档类型的。Microsoft一再声明:微软对所有无文档的存储过程,扩展存储过程,函数和视图,均不提供任何相关的支持。

时间: 2025-01-21 08:20:28

SQLServer 2005 列所有存储过程的语句_mssql2005的相关文章

在SQLServer 2005中编写存储过程_mssql2005

然而,在SQL Server 2005中,我们可以用.NET家族的语言--主要是VB.NET和C#来编写存储过程(以及方法.触发器和其它组件).让我们来熟悉一下关于编写存储过程新方法的5个常见问题.它们是非常值得我们探讨的. 1.为什么我们必须使用CLR模式来编写存储过程呢? 主要原因是速度.SQL CLR在很多方式下都运行较快:比如字符串处理,它比T-SQL运行快很多,并且对于错误的处理能力也更加强大.同时,由于CLR所提供的来执行这些事务的框架都更为完善,因此任何需要与数据库之外资源进行事务

SqlServer 2005的排名函数使用小结_mssql2005

尽管从技术上讲,其它排名函数的计算与ROW_NUMBER类似,但它们的的实际应用却少很多.RANK和DENSE--RANK主要用于排名和积分.NTILE更多地用于分析. 先创建一个示例表: 复制代码 代码如下: SET NOCOUNT ON USE [tempdb] IF OBJECT_ID('Sales')IS NOT NULL DROP TABLE sales CREATE TABLE Sales ( empid VARCHAR(10) NOT NULL PRIMARY KEY, mgrid

SqlServer 2005 中字符函数的应用_mssql2005

复制代码 代码如下: USE Demo GO /* 将表Code的列String中的值提取放到Record表中 String 中字符类型为 dsddddd,2222222,222221,3 其中最后一位为标记对于Record表中的BiaoJi 前面的以','分割的是值对应Record表中Value */ GO DROP PROC proc_split_Code GO CREATE PROC proc_split_Code AS BEGIN SET NOCOUNT ON DECLARE @Coun

SQLServer“标识列”的相关问题

  下面我们看一张表:想一想在数据库SQLServer中我们如何能更简便的向这张表格中添加数据呢? 仔细观察此表我们不难发现,ID字段的这列数据的添充是有规律可循的,它是一个等比自增的数列,向数据表中添加这样的数据有没有简单的方法呢? 这就谈到了SQLServer标识列的问题.我查询一些资料做了总结,在此和大家一起分享受与交流. (1)标识列的定义 标识列,(通常也称为"标识字段"或者称为"自动增长字段")是一行记录区别其它记录的标识,为的也是能唯一地检索出该行记录

使用Navicat Premium新建SQLServer 2005数据库、用户及权限赋予

前几天写过一篇<烂泥:利用IIS.Zblog.SQLServer搭建ASP博客>,介绍有关使用SQLServer数据库搭建博客的文章. 在那篇文章中,我们使用的SA用户,也即是使用最高权限的用户,来建立并连接数据库的.这篇文章,我们来使用Navicat Premium这款软件新建SQLServer 2005普通用户,及权限赋予. 首先,我们先来打开Navicat Premium,点击面板上相关的数据库,然后填入相关的信息.如下图: Navicat Premium连接SQLServer进去后,如

SQLServer 2005 数据库定阅复制实现双机热备(主要是sharepoint 内容数据库)

原文:SQLServer 2005 数据库定阅复制实现双机热备(主要是sharepoint 内容数据库) 场景 公司最近的sharepoint的数据库服务器老是出问题,并且在一旦出现问题,就导致无法正常工作.最主要的是我们要加班还原以前的数据库,这是最头疼的.于是在网上查找资料,实现主备机的同步,对于sharepoint而言我们只需做到sharepoint的内容数据库同步即可.这种技术有个专业名词叫做双机热备. 双机热备原理 双机热备特指基于高可用系统中的两台服务器的热备(或高可用),因两机高可

mysql 存储过程case语句语法与实例教程

接着我们要讲的是关于mysql教程 存储过程case语句语法与实例教程哦,首页我们来看看case语句的简单说明,再以实例说明case的具体用法. case语句. case语句比起if要复杂了一些,它可以构造更复杂的条件. Case condtion           WHEN whenvalue THEN statlist         [when value then statmentlist]          [else statmentlist] end case or: case

SQLSERVER 2005中使用sql语句对xml文件和其数据的进行操作(很全面)_mssql2005

--用SQL多条可以将多条数据组成一棵XML树L一次插入 --将XML树作为varchar参数传入用 --insert xx select xxx from openxml() 的语法插入数据 -----------------------------------导入,导出xml-------------------------- --1导入实例 --单个表 create table Xmltable(Name nvarchar(20),Nowtime nvarchar(20)) declare

SQLserver 2005文件和文件组的作用说明_mssql2005

1.文件和文件组的含义与关系 每个数据库有一个主数据文件.和若干个从文件.文件是数据库的物理体现. 文件组可以包括分布在多个逻辑分区的文件,实现负载平衡.文件组允许对文件进行分组,以便于管理和数据的分配/放置.例如,可以分别在三个硬盘驱动器上创建三个文件(Data1.ndf.Data2.ndf 和 Data3.ndf),并将这三个文件指派到文件组 fgroup1 中.然后,可以明确地在文件组 fgroup1 上创建一个表.对表中数据的查询将分散到三个磁盘上,因而性能得以提高.在 RAID(磁盘冗