SELECT [schema] = OBJECT_SCHEMA_NAME([object_id]),
name
FROM sys.procedures;
या
SELECT [schema] = SCHEMA_NAME([schema_id]),
name
FROM sys.procedures;
किसी विशिष्ट डेटाबेस के लिए, आप पहले उस डेटाबेस के संदर्भ को बदल सकते हैं, या मार्क की क्वेरी को थोड़ा बदल सकते हैं (मेरे प्रश्न इस मामले में अच्छे नहीं हैं क्योंकि वे संदर्भ-संवेदनशील कार्यों पर भरोसा करते हैं):
SELECT
SchemaName = s.name,
ProcedureName = pr.name
FROM
databasename.sys.procedures pr
INNER JOIN
databasename.sys.schemas s ON pr.schema_id = s.schema_id;
यदि आप सभी डेटाबेस के लिए ऐसा करना चाहते हैं:
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += N'
UNION ALL SELECT db = N''' + name + ''',
s.name COLLATE Latin1_General_CI_AI,
o.name COLLATE Latin1_General_CI_AI
FROM ' + QUOTENAME(name) + '.sys.procedures AS o
INNER JOIN ' + QUOTENAME(name) + '.sys.schemas AS s
ON o.[schema_id] = s.[schema_id]'
FROM sys.databases
-- WHERE ... -- probably don't need system databases at least
SELECT @sql = STUFF(@sql, 1, 18, '')
-- you may have to adjust ^^ 18 due to copy/paste, cr/lf, tabs etc
+ ' ORDER BY by db, s.name, o.name';
EXEC sp_executesql @sql;
यदि आपके पास अलग-अलग कॉलेशन वाले डेटाबेस हैं तो कोलेट क्लॉज आवश्यक हैं।