sql-server - 在 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_rename
:
Caution: Changing any part of an object name could break scripts and stored procedures.
目录视图中的文本不会被 更改sp_rename
。当您通过 SSMS 或 SMO 编写 proc 脚本时,将更正 proc 名称。您可以使用该脚本更改(或删除/创建)模块,以在重命名后修复目录视图中的文本。
推荐阅读
- android - 如何拦截Android中的所有onClick事件?
- string - 如何从 Rust 中的另一个字符串中删除单个尾随字符串?
- c# - 来自测试的 Autofac RegisterAssemblyTypes
- pdf - Netsuite 发票 Pdf 显示应用金额
- python - Python如何获取一些property.setter的绑定方法
- wcf - WCF 消息未通过协议验证
- c++ - 试图了解名称何时在当前实例中
- android - 实时内存取证安卓手机
- python - 如何在散景中访问和更改 ColumnDataSource 中的列?
- docker - 从多阶段 Docker 构建中提取文件