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. Предимства на SQL Server 2008 пред SQL Server 2005?

  2. CRUD операции на SQL Server

  3. Размисли за сигурността на SQL Server

  4. Накарайте сървъра да изпълнява автоматично asp-script всеки ден

  5. Сблъсък на типа операнд