Sql-Server
儲存過程查詢文本是否儲存在任何表中?
除了需要計劃句柄的 DM_EXEC_SQL_TEXT 函式之外,我在 sys 模式對像中看不到任何東西,但我試圖從中獲取查詢文本的過程目前沒有執行。(也許有辦法通過他們的記憶體計劃?……雖然我正在尋找的那些可能沒有記憶體計劃。)
儲存過程的查詢文本是否儲存在任何可查詢的地方?
我看到 sp_helptext 可能是一個選項:https ://docs.microsoft.com/en-us/sql/relational-databases/stored-procedures/view-the-definition-of-a-stored-procedure?view=sql- server-ver15#TsqlProcedure
有幾種方法可以獲得需要不同的輸入資訊
您只需要知道要為其定義的對象的名稱。
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*
也特定於數據庫,但返回對象的完整文本。