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

T-SQL:Tampilkan prosedur tersimpan yang terkait dengan tabel, secara siklis

Ini menggunakan skema informasi untuk kedua tabel, dan prosedur tersimpan. Anda dapat mengubah atau menghilangkan kondisi ROUTINE_TYPE untuk menambahkan fungsi, dan Anda dapat mengubah jenis tabel untuk mengembalikan tampilan.

Jawaban ini menghasilkan hasilnya dengan memeriksa tabel apa yang bergantung pada prosedur tersimpan. Saya pikir ini akan menjadi hasil yang jauh lebih akurat daripada memeriksa apakah sebuah nama ada dalam teks kueri. Jika prosedur merujuk ke tabel di bagian komentar, maka hasil ini tidak akan dikembalikan di kueri pertama, tetapi akan ada di jawaban kedua dan jawaban lain yang diberikan.

SELECT t.TABLE_NAME, s.ROUTINE_NAME
FROM INFORMATION_SCHEMA.TABLES t
INNER JOIN INFORMATION_SCHEMA.ROUTINES s ON
    s.ROUTINE_NAME IN (SELECT referencing_entity_name 
        FROM sys.dm_sql_referencing_entities(TABLE_SCHEMA + '.' + TABLE_NAME, 'OBJECT'))
    AND s.ROUTINE_TYPE = 'PROCEDURE'
WHERE t.TABLE_TYPE = 'BASE TABLE'

edit :Inilah cara mendapatkan dependensi tanpa fungsi. (Saya paling suka metode ini)

SELECT DISTINCT t.name [TableName], p.name [ProcedureName]
FROM sys.objects t 
LEFT JOIN sys.sql_dependencies d ON
    d.referenced_major_id = t.object_id
LEFT JOIN sys.objects p ON
    p.object_id = d.object_id
    AND p.type = 'p'
WHERE t.type = 'u'

Jika penggunaan khusus Anda hanya untuk menemukan string apa pun yang cocok dengan nama tabel, di bawah ini akan berfungsi:

SELECT t.TABLE_NAME, s.ROUTINE_NAME 
FROM INFORMATION_SCHEMA.TABLES t
INNER JOIN INFORMATION_SCHEMA.ROUTINES s 
    ON CHARINDEX(t.TABLE_NAME, s.ROUTINE_DEFINITION) > 0
    AND s.ROUTINE_TYPE = 'PROCEDURE'
WHERE t.TABLE_TYPE = 'BASE TABLE'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pernyataan Penggabungan SQL

  2. Fungsi untuk Menghitung Median di SQL Server

  3. scope_identity vs ident_current

  4. Bagaimana sys.dm_exec_describe_first_result_set_for_object Bekerja di SQL Server

  5. SQL Server 2008 DAPATKAN DATETIMEOFFSET sesuai dengan pengaturan mesin