次のクエリは、データベース内のすべてのストアド プロシージャをその定義と共に一覧表示します。12 行を返します。
USE [HQ-211-STOCK-DBO]
SELECT OBJECT_NAME (object_id) AS sp_name,
[definition] AS sp_definition
FROM [HQ-211-STOCK-DBO].sys.sql_modules as st
WHERE OBJECTPROPERTY (object_id, 'IsProcedure') = 1
別のデータベースを使用するようにクエリの最初の行を変更すると、次のようになります。
USE [HQ-193-STOCK-DBO]
SELECT OBJECT_NAME (object_id) AS sp_name,
[definition] AS sp_definition
FROM [HQ-211-STOCK-DBO].sys.sql_modules as st
WHERE OBJECTPROPERTY (object_id, 'IsProcedure') = 1
ゼロ行が返されました。
クエリの 4 行目 (FROM 行) を変更すると、次のようになります。
USE [HQ-193-STOCK-DBO]
SELECT OBJECT_NAME (object_id) AS sp_name,
[definition] AS sp_definition
FROM [HQ-193-STOCK-DBO].sys.sql_modules as st
WHERE OBJECTPROPERTY (object_id, 'IsProcedure') = 1
1行返されます。
データベース名のプレフィックスsys.sql_modules
が期待どおりに機能しないようです。
誰かが私が間違っていることを指摘できますか? を参照するときにデータベース名を指定できないのはなぜsys.sql_modules
ですか?