13. červenec 2007
Object search v MSSQL 2005
V Microsoft SQL 7 a SQL 2000 se dalo hledat v objektech databáze poměrně snadno. Stačilo oteřvít Query Analyzer zmáčknout F4 a už jste měli otevřený Object Search. Stačilo jen nastavit v kterých objektech chcete hledat, zadat hledaný text a bylo to.
Hledáte tuto možnost v MS SQL 2005? Bohužel marně. Vývojové centrum Microsoftu se rozhodlo tuto funkci odstranit, protože "jí nikdo nepoužívá". Tolik vysvětlení ze strany Microsoftu. Nicméně i tak můžeme dál hledat v objektech databáze, jen si na to musíme napsat script.
Pro hledání textu použijeme systémové tabulky sysobjects a syscomments. Kód pro hledání může vypadat například takto.
SELECT DISTINCT sysobjects.name AS [Object Name] ,
case
when sysobjects.xtype = 'C' then 'CHECK constraint'
when sysobjects.xtype = 'D' then 'Default or DEFAULT constraint'
when sysobjects.xtype = 'F' then 'Foreign Key'
when sysobjects.xtype = 'FN' then 'Scalar function'
when sysobjects.xtype = 'P' then 'Stored Procedure'
when sysobjects.xtype = 'PK' then 'PRIMARY KEY constraint'
when sysobjects.xtype = 'S' then 'System table'
when sysobjects.xtype = 'TF' then 'Function'
when sysobjects.xtype = 'TR' then 'Trigger'
when sysobjects.xtype = 'U' then 'User table'
when sysobjects.xtype = 'UQ' then 'UNIQUE constraint'
when sysobjects.xtype = 'V' then 'View'
when sysobjects.xtype = 'X' then 'Extended stored procedure'
end as [Object Type]
FROM sysobjects
WHERE
sysobjects.type in ('C','D','F','FN','P','K','S','TF','TR','U','V','X')
AND sysobjects.category = 0
AND CHARINDEX(@SEARCHSTRING,sysobjects.name)>0
AND ((CHARINDEX(@notcontain,sysobjects.name)=0 or CHARINDEX(@notcontain,sysobjects.name)<>0))
@SEARCHSTRING přiřadíme hledaný text, pokud chceme určitý text vyloučit naplníme hodnotu @notcontain
Pro omezení jen na určité objekty stačí zakomentovat určité kusy kódu s WHEN a změnit podmínku sysobjects.type in ('C','D','F','FN','P','K','S','TF','TR','U','V','X').
Přehled type objektů, které můžeme použít:
type
C = CHECK constraint
D = Default or DEFAULT constraint
F = FOREIGN KEY constraint
FN = Scalar function
IF = Inlined table-function
K = PRIMARY KEY or UNIQUE constraint
L = Log
P = Stored procedure
R = Rule
RF = Replication filter stored procedure
S = System table
TF = Table function
TR = Trigger
U = User table
V = View
X = Extended stored procedure