SQL SERVER OBJECT SEARCH SP_

Merhaba Sevgili Arkadaşlar,

Bu gün sizlere işinize çok yarayacak bir sp_ yi paylaşacağım.

SP_ mizin amacı Instance ımız üzerinde bulunan objelerin hangi database lerde yer aldığını bulmak.

Aradığımız bir tablonun yada bir function veya bir sp_ ‘ nin hangi database lerde yer aldığını bulmak bu sp_ sayesinde çok daha hızlı olacaktır.

Zaman ve iş yükü açısından harika bir performans sağlayan sp_ aşağıdadır.

/*
Created by   : Yusuf KAHVECİ
Created Date : 19.06.2013
KONU         :INSTANCE ın İçerisinde Objelerin Hangi Database lerde yer aldığını öğrenmek.
*/
CREATE Procedure [dbo].[Object_Search]
@Object VARCHAR(100)
AS
DECLARE @Crsr CURSOR
DECLARE @DB_Name VARCHAR(100)
DECLARE @Mssg VARCHAR(100)

--SET @Object = 'CallHistory'

SET @Mssg = 'Object found in database: '
SET @Crsr = CURSOR FOR
          SELECT
            name
          FROM
            sys.databases
          WHERE
            [state] = 0 

OPEN @Crsr
FETCH NEXT FROM @Crsr INTO
              @DB_Name

WHILE (@@FETCH_STATUS = 0)
BEGIN

  DECLARE @SQL VARCHAR(MAX)
  SET @SQL = 

  '
  IF (SELECT COUNT(0) FROM [' + @DB_Name + '].sys.objects WHERE name = ''' + @Object + ''') > 0
  BEGIN
  PRINT ''' + @Mssg + @DB_Name + '''
  PRINT ''Created By :  Yusuf Kahveci (Database Administrator)''
  END
  '

  --PRINT @SQL
  EXEC (@SQL)
  FETCH NEXT FROM @Crsr INTO
                @DB_Name

END

CLOSE @Crsr
DEALLOCATE @Crsr

 

Yukarıda ki sp_ mizi çalıştıralım ..

11-300x212

 

Yukarıda ki ekran görüntümüzde de görüldüğü üzere Tablomuzun hangi DB de olduğunu görmüş bulunmaktayız. Karmaşık ve fazla DB li sistemlerde işimize çok yarayacak bir sp_ dir.

İyi Çalışmalar.

Leave a Reply

Your email address will not be published. Required fields are marked *