sql >> Database >  >> RDS >> Sqlserver

Lijst van alle opgeslagen procedures met schemanaam

SELECT [schema] = OBJECT_SCHEMA_NAME([object_id]),
  name
FROM sys.procedures;

of

SELECT [schema] = SCHEMA_NAME([schema_id]),
  name
FROM sys.procedures;

Voor een specifieke database kun je eerst de context naar die database wijzigen, of de zoekopdracht van Marc iets wijzigen (mijn zoekopdrachten zijn in dit geval niet goed omdat ze afhankelijk zijn van functies die contextgevoelig zijn):

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;

Als u dit voor alle databases wilt doen:

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;

De sorteerclausules zijn nodig als u databases met verschillende sorteringen heeft.



  1. Hoe gefragmenteerde indexen te achterhalen en te defragmenteren in PostgreSQL?

  2. dblink bestaat niet, ook al bestaat de extensie al?

  3. 30 tabellen met weinig rijen - TRUNCATE de snelste manier om ze leeg te maken en bijgevoegde reeksen opnieuw in te stellen?

  4. Gebruik group by in en retourneer de identiteit van de rij