首页 > 解决方案 > 在 SQL Server 中重命名后获取存储过程的文本

问题描述

我今天遇到了一个奇怪的问题......我在存储过程上做了一个 sp_helptext,但是 CREATE PROCEDURE 语句中的存储过程名称(在结果中)与我在 sp_helptext 语句中使用的名称不对应(见下面的截图) . 我尝试从 sys.all_sql_modules 和 OBJECT_DEFINITION 中进行选择,但结果相同。

在下面的示例中,我使用了 InvIRCode_GetByInvIRID 但结果给了我 InvIRCode_Get List ByInvIRID

我做了一些研究,它似乎是一个已知的 SQL Server 错误,并且在重命名存储过程时发生。

我的问题是:如何获得存储过程的正确源代码?

有趣的是,当我在 SQL Server Management Studio 的对象资源管理器中右键单击 sp 并选择将过程脚本写入新窗口时,它确实给出了正确的代码。

SP 代码

标签: sql-serverstored-procedures

解决方案


请注意,此警告消息由以下人员返回sp_rename

Caution: Changing any part of an object name could break scripts and stored procedures.

目录视图中的文本不会被 更改sp_rename。当您通过 SSMS 或 SMO 编写 proc 脚本时,将更正 proc 名称。您可以使用该脚本更改(或删除/创建)模块,以在重命名后修复目录视图中的文本。


推荐阅读