0

どのストアドプロシージャにテキストが含まれているかを調べようとしています(MS SQLのGrepのようなもの)。テーブルの名前を見つけて置き換えることができるようにします。

たとえば、データベース上のどのストアドプロシージャにテーブル名「clients_users」が含まれているかを調べたい場合

4

3 に答える 3

1

SQLServer2005以降の1つの方法

SELECT NAME
FROM sys.procedures
WHERE OBJECT_DEFINITION(object_id) LIKE '%clients[_]users%'

_はワイルドカード検索を行うときに任意の文字を意味するため、_の周りに[]が必要です

于 2012-07-21T13:19:27.307 に答える
1

次のコードは、1つ以上の特定のテーブルに関連するすべてのストアドプロシージャ(SP)を見つけるのに役立ちます。sp_helpおよびsp_dependsは、常に正確な結果を返すとは限りません。

- - オプション1

SELECT DISTINCT so.name  
FROM syscomments sc  
INNER JOIN sysobjects so ON sc.id=so.id  
WHERE sc.TEXT LIKE '%tablename%'  

----オプション2

SELECT DISTINCT o.name, o.xtype  
FROM syscomments c  
INNER JOIN sysobjects o ON c.id=o.id    
WHERE c.TEXT LIKE '%tablename%'
于 2012-07-21T14:28:12.763 に答える
0

次のクエリを実行すると、必要な結果が得られます。foob​​arを、ストアドプロシージャで見つける必要のあるテキストに置き換えます。

SELECT ROUTINE_NAME, ROUTINE_DEFINITION 
    FROM INFORMATION_SCHEMA.ROUTINES 
    WHERE ROUTINE_DEFINITION LIKE '%foobar%' 
    AND ROUTINE_TYPE='PROCEDURE'
于 2012-07-21T13:17:17.657 に答える