除了需要计划句柄的DM_EXEC_SQL_TEXT函数之外,我在sys模式对象中看不到任何东西,但我试图从其中获取查询文本的过程目前没有运行。(也许有一种通过他们缓存的plans?...though的方法,我正在寻找的那些可能没有缓存的计划。)
存储过程的查询文本是否存储在查询的任何地方?
我认为sp_helptext可能是一种选择:https://learn.microsoft.com/en-us/sql/relational-databases/stored-procedures/view-the-definition-of-a-stored-procedure?view=sql-server-ver15#TsqlProcedure
发布于 2020-01-08 22:56:38
有几种获取此信息的方法需要不同的输入信息。
您只需要知道要定义的对象的名称。
SELECT ROUTINE_NAME, ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_NAME = 'MyProcName'注意,此架构是特定于数据库的,因此您需要在数据库的上下文中进行此查询才能返回正确的数据。还请注意,它只返回过程的前4000个字符。
您需要知道您正在寻找的过程的object_id。
SELECT OBJECT_DEFINITION(*object_id*)也是特定于数据库的,但返回对象的完整文本。
您需要知道您正在寻找的过程的object_id。
SELECT * FROM sys.sql_modules WHERE object_id = *object_id*也是特定于数据库的,但返回对象的完整文本。
https://dba.stackexchange.com/questions/256970
复制相似问题