Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

स्कीमा नाम के साथ सभी संग्रहीत प्रक्रियाओं की सूची बनाएं

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;

यदि आपके पास अलग-अलग कॉलेशन वाले डेटाबेस हैं तो कोलेट क्लॉज आवश्यक हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. फोन के लिए एसक्यूएल वर्कर (लंबाई) में मुझे दुनिया भर में सबसे लंबे समय तक संभावित फोन नंबर पर विचार करना चाहिए

  2. सारणीबद्ध से बहुआयामी में एसक्यूएल-सर्वर डीबी बदलना

  3. SQL सर्वर में दशमलव से अनुगामी शून्य निकालें

  4. डेटटाइम से INT . में कनवर्ट करें

  5. CTE त्रुटि:प्रकार एंकर और पुनरावर्ती भाग के बीच मेल नहीं खाते