1

奇妙なことに、これは数週間前に機能しました。特定のフレーズが出現するすべてのストアドプロシージャのすべてのインスタンスを見つける必要があります。何百ものストアドプロシージャがあるので、SQLを使用してそれらすべてがどこにあるかを教えてもらいたいと思いました。私はこのステートメントを使用しています:

SELECT DISTINCT
o.name, o.type_desc
FROM sys.sql_modules m
JOIN sys.objects o ON m.object_id = o.object_id
WHERE m.definition LIKE '%view_cu_Account_Bills_b%'

問題は、ゼロ行を返すことです。次のクエリのように、問題はsys.sql_modulesにあるようです。

SELECT TOP 5 * 
FROM sys.sql_modules

ゼロ行も含まれます。何百ものストアドプロシージャがあるデータベースで、sys.sql_modulesに何も含まれていないのはなぜですか?MS SQL Serverの設定に何か足りないものがありますか?(私は2008年版を使用しています)。

4

1 に答える 1

1

はい、Martin Smithが提案したように、最初にクエリが正しいデータベースコンテキストにあることを確認してください。

USE YOUR_DATABASE_NAME;

それ以外の場合、次のクエリは何も返しません。

SELECT TOP 5 * 
FROM sys.sql_modules;
于 2016-05-11T11:51:01.977 に答える