Bu procedur çok işime yaradı,sizinde işinize yarar diye paylaşmak istiyorum.Parametre olarak aldığı kelimeyi database deki mevcut tüm tablolarda nchar,nvarchar,varchar alanlarında arayıp tablo ismi ,sütun ismi ve aranan kelimle kaç kare geçmiş bize getiriyor.
Create PROCEDURE [dbo].[nsp_TabloGecenKelimeler]
@WORD VARCHAR(20)
AS
BEGIN
DECLARE @TABLOADI VARCHAR(50)
DECLARE @SUTUNADI VARCHAR(50)
DECLARE @ID INT
DECLARE @CID INT
DECLARE @SORGU VARCHAR(MAX)
CREATE TABLE #TT(
ID INT,
CID INT)
DECLARE WEB_SORGU CURSOR FOR
select a.name,b.name,a.id,b.colid from sysobjects a,syscolumns b where a.id=b.id and a.xtype='u' and (b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167)
OPEN WEB_SORGU
FETCH NEXT FROM WEB_SORGU INTO @TABLOADI,@SUTUNADI,@ID,@CID
while (@@FETCH_STATUS=0)
BEGIN
SET @SORGU='INSERT INTO #TT(ID,CID) SELECT ' + CONVERT(varchar(20),@ID)+',' + CONVERT(varchar(10),@CID) + ' FROM ['+ @TABLOADI +'] where ' + @SUTUNADI +' like ''%'+@WORD+'%'' '
EXEC(@SORGU)
FETCH NEXT FROM WEB_SORGU INTO @TABLOADI,@SUTUNADI,@ID,@CID
END
--------------
CLOSE WEB_SORGU
DEALLOCATE WEB_SORGU
-------------------
select a.name as [Tablo Ismi],b.name [Sutun Ismi],count(*) as Toplam from sysobjects a
join syscolumns b on a.id=b.id join #TT c on b.id=c.ID and b.colid=c.CID
GROUP BY a.name,b.name order by a.name,b.name
--select * from #TT
Drop Table #TT
END