Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

T-SQL:Показване на съхранени процедури, свързани с таблици, циклично

Това използва информационна схема както за таблици, така и за съхранени процедури. Можете да промените или да се отървете от условието ROUTINE_TYPE, за да добавите функции, и можете да промените типа на таблицата, за да върнете изгледи.

Този отговор дава своите резултати, като проверява от какви таблици зависи съхранената процедура. Мисля, че това ще бъде много по-точен резултат от проверката дали име е в текста на заявката. Ако процедурата препраща към таблица в раздел за коментари, тогава този резултат няма да бъде върнат в първата заявка, но ще бъде във втората и ще бъдат дадени други отговори.

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'

редактиране :Ето как да получите зависимостите без функцията. (Този метод ми харесва най-много)

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'

Ако вашата конкретна употреба е просто да намерите всеки низ, който съответства на име на таблица, по-долу ще работи:

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. Изтриване на запис от набор от данни и sql сървър

  2. Намерете заключена таблица в SQL Server

  3. SQL Server:изберете най-новите редове, чиято сума съвпада със стойност

  4. Как работи функцията REPLICATE() в SQL Server (T-SQL)

  5. Динамично създаден SQL срещу параметри в SQL Server