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

Di SQL Server, bagaimana saya bisa menemukan di mana pun kolom direferensikan?

Peringatan: Meskipun ini adalah metode pencarian teks, skrip yang akan saya bagikan telah menyelamatkan saya banyak waktu . Ia mencari di dalam:

  • fungsi skalar
  • fungsi bernilai tabel
  • prosedur tersimpan
  • tampilan
  • pemicu

Saya perlu menentukan susunan agar berfungsi untuk saya.

SELECT
    sys.objects.object_id, 
    sys.schemas.name AS [Schema], 
    sys.objects.name AS Object_Name, 
    sys.objects.type_desc AS [Type]
FROM sys.sql_modules (NOLOCK) 
INNER JOIN sys.objects (NOLOCK) ON sys.sql_modules.object_id = sys.objects.object_id 
INNER JOIN sys.schemas (NOLOCK) ON sys.objects.schema_id = sys.schemas.schema_id
WHERE
    sys.sql_modules.definition COLLATE SQL_Latin1_General_CP1_CI_AS LIKE '%{Column Name}%' ESCAPE '\'
ORDER BY sys.objects.type_desc, sys.schemas.name, sys.objects.name

Outputnya seperti berikut:

Perbarui :Jika Anda perlu mencari tabel tertentu, SP, dll. Anda dapat menggunakan kueri yang lebih khusus:

DECLARE @SCHEMA_NAME VARCHAR(100) = 'dbo';
DECLARE @OBJECT_NAME VARCHAR(100) = 'MY_OBJECT';

SELECT
    sys.objects.object_id,
    sys.schemas.name AS [Schema], 
    sys.objects.name AS Object_Name, 
    sys.objects.type_desc AS [Type]
FROM sys.sql_modules (NOLOCK) 
INNER JOIN sys.objects (NOLOCK) ON sys.sql_modules.object_id = sys.objects.object_id 
INNER JOIN sys.schemas (NOLOCK) ON sys.objects.schema_id = sys.schemas.schema_id
WHERE
    (
           '#' + sys.sql_modules.definition + '#' COLLATE SQL_Latin1_General_CP1_CI_AS LIKE '%[^a-z_]'[email protected]_NAME+'.'[email protected]_NAME+'[^a-z_]%' ESCAPE '\'
        OR '#' + sys.sql_modules.definition + '#' COLLATE SQL_Latin1_General_CP1_CI_AS LIKE '%[^a-z_]\['[email protected]_NAME+'\].'[email protected]_NAME+'[^a-z_]%' ESCAPE '\'
        OR '#' + sys.sql_modules.definition + '#' COLLATE SQL_Latin1_General_CP1_CI_AS LIKE '%[^a-z_]'[email protected]_NAME+'.\['[email protected]_NAME+'\][^a-z_]%' ESCAPE '\'
        OR '#' + sys.sql_modules.definition + '#' COLLATE SQL_Latin1_General_CP1_CI_AS LIKE '%[^a-z_]\['[email protected]_NAME+'\].\['[email protected]_NAME+'\][^a-z_]%' ESCAPE '\'
    )
ORDER BY sys.objects.type_desc, sys.schemas.name, sys.objects.name

P.S. :Kedua kueri juga mencari di dalam komentar.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbaiki "Setidaknya salah satu argumen untuk COALESCE harus berupa ekspresi yang bukan konstanta NULL" di SQL Server

  2. Pemikiran tentang SQL Server 2019 Editions

  3. Operasi CRUD dengan ASP.NET Core MVC, Entity Framework Core, dan SQL Server

  4. Bagaimana OBJECTPROPERTY() Bekerja di SQL Server

  5. Kinerja SQL Server TOP IO Query -2