Sysスキーマオブジェクトには、プランハンドルを必要とするDM_EXEC_SQL_TEXT関数以外は何も表示されませんが、クエリテキストを取得しようとしているプロシージャが現在実行されていません。 (たぶん、キャッシュされたプランに方法があるのでしょうか?...私が探しているものにはキャッシュされたプランがないかもしれませんが。)
ストアドプロシージャのクエリテキストは、クエリ可能な場所に保存されていますか?
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*
データベース固有ですが、オブジェクトの完全なテキストを返します。