Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Daftar semua prosedur tersimpan dengan nama skema

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

atau

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

Untuk database tertentu, Anda bisa mengubah konteks ke database itu terlebih dahulu, atau mengubah kueri Marc sedikit (kueri saya tidak bagus dalam kasus ini karena bergantung pada fungsi yang peka konteks):

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;

Jika Anda ingin melakukan ini untuk semua database:

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;

Klausa susun diperlukan jika Anda memiliki database dengan susunan yang berbeda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa urutan eksekusi untuk pernyataan SQL ini?

  2. Bagaimana saya bisa MEMILIH beberapa kolom dalam CASE WHEN di SQL Server?

  3. Sisipkan beberapa baris TANPA mengulangi bagian INSERT INTO ... dari pernyataan?

  4. Cara Mengembalikan Kepercayaan dalam Batasan Kunci Asing di SQL Server (Contoh T-SQL)

  5. Memulihkan akses ke instance SQL Server tanpa memulai ulang