3

我在 SQL Server 2008 中创建了许多编号的存储过程。

他们的名字是例如:dbo.ProcName, dbo.ProcName;2, dbo.ProcName;3,...

当我在 Management Studio 2008 的过程列表中使用右键单击过程名称,然后单击以Modify查看和编辑我上面写的所有存储过程时。

但是在 Management Studio 2012 中,经过相同的操作后,我只能看到第一个过程。

如何查看和编辑所有具有相同名称和分号后缀的存储过程?

4

2 回答 2

5

听起来您在谈论编号的存储过程

我可以重现相同的行为。运行以下命令后

CREATE PROCEDURE [dbo].[foo];1 @x int AS
  PRINT 'x is ' + CONVERT(varchar(8), @x)
GO
CREATE PROCEDURE [dbo].[foo];2 @x char AS
  PRINT 'x is ' + @x
GO

在对象资源管理器中选择“Foo”,然后选择“修改”在 SSMS 2008 中显示两个版本,但在 SSMS 2012 中只显示第一个版本。

这些自 2005 年以来已被弃用,因此如果故意决定不再在工具中支持它们,我不会感到惊讶。看起来Drop and Create仍然列出了两个版本。

于 2012-09-22T20:08:10.990 回答
1

另一种解决方法:

EXEC sp_helptext 'dbo.ProcName';

不过,您必须自己注入GOs。


您还可以通过以下方式获取元数据:

SELECT definition
FROM sys.sql_modules
WHERE [object_id] = OBJECT_ID('dbo.ProcName')
UNION ALL
SELECT definition
FROM sys.numbered_procedures
WHERE [object_id] = OBJECT_ID('dbo.ProcName');

这样:

SELECT [text] FROM syscomments
WHERE id = OBJECT_ID('dbo.ProcName');

您可以通过 Generate Scripts 向导:

  1. 右键单击您的数据库并选择任务 > 生成脚本
  2. 在“选择对象”屏幕上,选择“选择特定数据库对象,选中“存储过程”,然后展开以选择要编写脚本的编号存储过程的根名称。
  3. 在“设置脚本选项”屏幕上,选择“保存到新查询窗口”。
  4. 单击下一步 > 下一步 > 完成。

我还为此提交了一个错误:

http://connect.microsoft.com/SQLServer/feedback/details/764197/ssms-2012-inconsistently-handles-numbered-procedures

于 2012-09-22T20:20:29.030 回答