何千ものストアド プロシージャを含む SQL Server データベース (2012 年ですが、2008 年になる可能性があります) があります。
どのストアド プロシージャが特定のパラメーターを受け取っているかをプログラムで知りたいのですがcompanyid
、クエリ内で実際には使用していません。
したがって、このプロジェクトの 2 つの目標は次のとおりです。
- パラメータを受け取らないストアド プロシージャを特定する
companyid
companyid
パラメータを期待しているが、実際にはコード内で使用していないストアド プロシージャを特定します。
タスクを完了するために、TSQL を作成するか、C# でアプリを作成することを想定しています。どちらの提案も機能します。
ですから、それを達成するための最良の方法は何ですか?
前もって感謝します
================================================== ========
両方の提案に基づくと、解決策は次のとおりです。
SELECT Specific_Name,
((len(ROUTINE_DEFINITION) - len(replace(ROUTINE_DEFINITION, '@companyid', '')))/ 10) as COUNT,
ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%@companyid%'
ORDER BY 2, 1
注: 文字列の置換を 10 で割ると、本文内のその特定の文字列のインスタンスの数が得られます。1 はパラメーターのみを意味し、2 以上は本体で使用されていることを意味します。
あなたがた両方に感謝します !!