DB’de bulunan tüm objelerde (table,view,sp,func vb.) arama yapmak

Search All
MS SQL Server database’de bulunan objeler (tables, views,sp, functions, vb.) hakkındaki bilgileri bir tabloda tutmaktadır. Bu tablo SQL 2000 de sysobjects view’i yada SQL2005-2008  de bulunan sys.objects view’leri ile erişilebilip sorgulama yapılabilmekteyiz. Büyük databaselerde bir çok obje (table,view,sğ,function vb.) içerisinde bazen aradığımız bir kodu bulmamız uzun sürebilir. Bu script sayesinde database de bulunan tüm objeler içerisinde arama yapılarak istediğimiz kodu çok hızlı bir şekilde bulabiliriz.

DECLARE @Search VARCHAR(255)
SET @Search = 'keyword'
SELECT DISTINCT
 LEFT(so.name, 100) AS Object_Name ,
 LEFT(CASE so.type
 WHEN 'AF' THEN 'Aggregate function (CLR)'
 WHEN 'C' THEN 'CHECK constraint'
 WHEN 'D' THEN 'DEFAULT (constraint or stand-alone)'
 WHEN 'F' THEN 'FOREIGN KEY constraint'
 WHEN 'FN' THEN 'SQL scalar function'
 WHEN 'FS' THEN 'Assembly (CLR) scalar-function'
 WHEN 'FT' THEN 'Assembly (CLR) table-valued function'
 WHEN 'IF' THEN 'SQL inline table-valued function'
 WHEN 'IT' THEN 'Internal TABLE'
 WHEN 'P' THEN 'SQL Stored Procedure'
 WHEN 'PC' THEN 'Assembly (CLR) stored-procedure'
 WHEN 'PG' THEN 'Plan guide'
 WHEN 'PK' THEN 'PRIMARY KEY constraint'
 WHEN 'R' THEN 'Rule (old-style, stand-alone)'
 WHEN 'RF' THEN 'Replication-filter-procedure'
 WHEN 'S' THEN 'System base table'
 WHEN 'SN' THEN 'Synonym'
 WHEN 'SQ' THEN 'Service queue'
 WHEN 'TA' THEN 'Assembly (CLR) DML trigger'
 WHEN 'TF' THEN 'SQL table-valued-function'
 WHEN 'TR' THEN 'SQL DML trigger'
 WHEN 'TT' THEN 'Table type'
 WHEN 'U' THEN 'Table (user-defined)'
 WHEN 'UQ' THEN 'UNIQUE constraint'
 WHEN 'V' THEN 'View'
 WHEN 'X' THEN 'Extended stored procedure'
 END, 35) AS Object_Type
FROM syscomments sc
 INNER JOIN sysobjects so ON so.id = sc.id
WHERE text LIKE '%' + @Search + '%'
ORDER BY 2 , 1

Script’i örnek olarak AdventureWorks veri tabanında Customer keyword’ünü arayarak çalıştırdığımda aşağıdaki gibi bir sonuca ulaştım. Bu sonuca göre istediğim kodu bu objeler içerisinde bulup düzenleyebilirim.

Script çalıştırıldıktan sonraki sonuç

Kaynaklar;

MS SQL 2000: sysobjects

MS SQL 2005: sys.sysobjects

Mapping SQL Server 2000 System Tables to SQL Server 2005 System Views

MS SQL 2005: Compatibility Views (Transact-SQL)

MS SQL 2008: sys.objects

Bir cevap yazın