我在 SQL Server 2008 中创建了许多编号的存储过程。
他们的名字是例如:dbo.ProcName, dbo.ProcName;2, dbo.ProcName;3
,...
当我在 Management Studio 2008 的过程列表中使用右键单击过程名称,然后单击以Modify
查看和编辑我上面写的所有存储过程时。
但是在 Management Studio 2012 中,经过相同的操作后,我只能看到第一个过程。
如何查看和编辑所有具有相同名称和分号后缀的存储过程?
我在 SQL Server 2008 中创建了许多编号的存储过程。
他们的名字是例如:dbo.ProcName, dbo.ProcName;2, dbo.ProcName;3
,...
当我在 Management Studio 2008 的过程列表中使用右键单击过程名称,然后单击以Modify
查看和编辑我上面写的所有存储过程时。
但是在 Management Studio 2012 中,经过相同的操作后,我只能看到第一个过程。
如何查看和编辑所有具有相同名称和分号后缀的存储过程?
听起来您在谈论编号的存储过程。
我可以重现相同的行为。运行以下命令后
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
仍然列出了两个版本。
另一种解决方法:
EXEC sp_helptext 'dbo.ProcName';
不过,您必须自己注入GO
s。
您还可以通过以下方式获取元数据:
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 向导:
我还为此提交了一个错误: