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

而不是这样:

是否每次都有我喜欢的sp_helptext返回格式?
是什么导致了图像1的发生?
发布于 2017-03-01 10:36:03
sp_helptext有一些内置的有意的怪癖,还有一些“意外”的行为。
我在引号中提到这一点,因为大多数使用它的人实际上还没有读过文档,更不用说进入系统过程,查看过程本身的实际定义了。
我倾向于使用存储在系统表中的定义:
SELECT definition
FROM sys.all_sql_modules S
WHERE OBJECT_NAME(S.object_id) = 'MySProc'
;这通常给我更一致的结果,在某些方面,也允许我做立即修改,如果需要。使用sp_helptext,很多人将输出存储在变量中,然后修改变量值;使用直接来自sys.all_sql_modules的SELECT,您可以直接对返回的值执行所需的修改,而无需任何变量操作。
(顺便说一句,这里的这个查询同样适用于sp_helptext本身,欢迎您查看它的定义,试图了解它正在做什么,以及您的定义发生了什么。只要确保你不要意外地ALTER它.)
我知道这并不能完全回答你的问题:“为什么会发生这种事?”,我希望其他人的回答能帮助你。同时,您可以尝试查看系统表,看看它们是否会为您提供一个可行的解决方案。
祝好运!
First Edit:如果您要查找依赖项,取决于您的版本,您可以使用以下内容:
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'
;返回一个连接字符串:
[Referenced Tables]
--------------------
ServerName\InstanceName.DBName.TableNamehttps://stackoverflow.com/questions/42527899
复制相似问题