Как правило, для этого типа запроса вам потребуется циклически просматривать список баз данных (возможно, используя sp_MSforeachdb
) и запрашивать отдельные системные таблицы в каждой базе данных.
Нижеследующее может работать для вас, хотя это избегает. Первый метод проверяет object_id
и name
, но не проверяет, действительно ли объекты являются хранимыми процедурами.
Второй просто использует имя, запрошенное в комментариях, также проверяет тип объекта, но проверяет только схему по умолчанию.
WITH objects(name, id)
AS (SELECT 'uspGetBillOfMaterials', 23671132 UNION ALL
SELECT 'uspPrintError', 37575172) SELECT 'Using Id and Name',
sys.databases.name,
objects.name
FROM sys.databases,
objects
WHERE OBJECT_NAME(id, database_id) = objects.name
UNION ALL
SELECT 'Using Name (assumes default schema)',
sys.databases.name,
objects.name
FROM sys.databases,
objects
WHERE OBJECT_ID(databases.name + '..uspGetBillOfMaterials', 'P') IS NOT NULL