首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Server中的sp_helptext返回不同的结果?

为什么Server中的sp_helptext返回不同的结果?
EN

Stack Overflow用户
提问于 2017-03-01 09:25:48
回答 1查看 2K关注 0票数 0

我正在构建一个查询,它搜索我的sp_helptext结果,但有时sp_helptext输出如下:

而不是这样:

是否每次都有我喜欢的sp_helptext返回格式?

是什么导致了图像1的发生?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-01 10:36:03

sp_helptext有一些内置的有意的怪癖,还有一些“意外”的行为。

我在引号中提到这一点,因为大多数使用它的人实际上还没有读过文档,更不用说进入系统过程,查看过程本身的实际定义了。

我倾向于使用存储在系统表中的定义:

代码语言:javascript
复制
SELECT definition
FROM sys.all_sql_modules S 
WHERE OBJECT_NAME(S.object_id) = 'MySProc'
;

这通常给我更一致的结果,在某些方面,也允许我做立即修改,如果需要。使用sp_helptext,很多人将输出存储在变量中,然后修改变量值;使用直接来自sys.all_sql_modulesSELECT,您可以直接对返回的值执行所需的修改,而无需任何变量操作。

(顺便说一句,这里的这个查询同样适用于sp_helptext本身,欢迎您查看它的定义,试图了解它正在做什么,以及您的定义发生了什么。只要确保你不要意外地ALTER它.)

我知道这并不能完全回答你的问题:“为什么会发生这种事?”,我希望其他人的回答能帮助你。同时,您可以尝试查看系统表,看看它们是否会为您提供一个可行的解决方案。

祝好运!

First Edit:如果您要查找依赖项,取决于您的版本,您可以使用以下内容:

代码语言:javascript
复制
SELECT 
    ISNULL(D.referenced_server_name,@@SERVERNAME) + '.' + ISNULL(D.referenced_database_name,DB_NAME()) + '.' + D.Referenced_Entity_Name AS [Referenced Tables]
FROM sys.procedures P
INNER JOIN sys.sql_expression_dependencies D
    ON P.object_id = D.referencing_id
WHERE P.name = 'MySProc'
;

返回一个连接字符串:

代码语言:javascript
复制
[Referenced Tables]
--------------------
ServerName\InstanceName.DBName.TableName
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42527899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档