【问题标题】:Get the text of a stored procedure after rename in SQL Server在 SQL Server 中重命名后获取存储过程的文本
【发布时间】:2020-03-11 11:56:33
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 停止寻找奇迹。这是一个已知问题,考虑到自首次发现以来已经过去的时间长度,它不太可能很快改变。您要么调整代码以进行补偿,要么将数据库架构/ddl 存储在源代码控制中(您应该这样做)。

标签: sql-server stored-procedures


【解决方案1】:

注意这条警告信息是由sp_rename返回的:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 2013-01-20
    • 2020-02-11
    • 1970-01-01
    相关资源
    最近更新 更多