Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

T-SQL:cyklicznie pokazuj procedury składowane związane z tabelami

Używa schematu informacji zarówno dla tabel, jak i procedur składowanych. Możesz zmienić lub usunąć warunek ROUTINE_TYPE, aby dodać funkcje, a także zmienić typ tabeli, aby zwracać widoki.

Ta odpowiedź daje wyniki, sprawdzając, od jakich tabel zależy procedura składowana. Myślę, że będzie to o wiele dokładniejszy wynik niż sprawdzenie, czy w tekście zapytania znajduje się nazwa. Jeśli procedura odnosi się do tabeli w sekcji komentarza, ten wynik nie zostanie zwrócony w pierwszym zapytaniu, ale będzie w drugim i innych udzielonych odpowiedziach.

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'

edytuj :Oto jak uzyskać zależności bez funkcji. (Najbardziej lubię tę metodę)

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'

Jeśli Twoim konkretnym zastosowaniem jest po prostu znalezienie dowolnego ciągu pasującego do nazwy tabeli, zadziała poniższe:

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. Nieużywany indeks programu SQL Server

  2. Funkcja DECODE() w SQL Server

  3. Jak pomnożyć wszystkie wartości w kolumnie za pomocą SQL, takiego jak SUM()

  4. Połącz OUTPUT insert.id z wartością z wybranego wiersza

  5. Łączna suma programu SQL Server według grup