text v Triggeru nebo Stored Proceduře

Pokud nechcete hledat pouze text v názvu triggeru nebo stored procedury, pak použití Object Search analyzeru není to co by vám dokázalo pomoci. Navíc v MS SQL 2005 Object Search analyzer prostě není. Proto je potřeba použít jiný způsob.

Zde je kód pro hledání v xtype objects, který obsahuje tělo triggeru, stored procedury případně dalších objektů uvnitř MS SQL databáze. Tento konkrétní příklad ukazuje jak hledat v triggerech a stored procedurách.

 


DECLARE @SEARCHSTRING VARCHAR(255), @notcontain Varchar(255)

SELECT @SEARCHSTRING = 'Text I am searching', @notcontain = ''

SELECT DISTINCT sysobjects.name AS [Object Name] ,
case when sysobjects.xtype = 'P' then 'Stored Proc'
when sysobjects.xtype = 'TF' then 'Function'
when sysobjects.xtype = 'TR' then 'Trigger'
end as [Object Type]

FROM sysobjects,syscomments
WHERE sysobjects.id = syscomments.id
AND sysobjects.type in ('P','TF','TR')
AND sysobjects.category = 0
AND CHARINDEX(@SEARCHSTRING,syscomments.text)>0
AND ((CHARINDEX(@notcontain,syscomments.text)=0
or CHARINDEX(@notcontain,syscomments.text)<>0))

Do @SEARCHSTRING proměnné můžete přiřadit libovolný text který potřebujete nalézt. Pokud potřebujete přidat podmínku, že určitý text obsahovat nemá, stačí naplnit proměnnou @notcontain.

Pro hledání můžete použít i jiné objekty MS SQL databáze. V takovém případě je třeba změnit podmínku CASE a přidat další xtypes typy, v kterých chcete hledat. Dále musíte změnit WHERE podmínku a sysobjects.type podle zvolených xtypes. Seznam použitelných objektů sysobjects.type a sysobjects.xtype je uveden níže a je velmi podobný. Je zde pouze jeden rozdíl a to type K (primární klíč nebo UNIQUE contraint) je v xtype rozdělený do PK (primární klíč) a UQ (UNIQUE constraint)

Seznam sysobjects.type objektů


C = CHECK constraint
D = Default or DEFAULT constraint
F = FOREIGN KEY constraint
K = PRIMARY KEY or UNIQUE constraint
L = Log
P = Stored procedure
R = Rule
RF = Replication filter stored procedure
S = System table
TR = Trigger
U = User table
V = View
X = Extended stored procedure

Seznam sysobjects.xtypes objektů


C = CHECK constraint
D = Default or DEFAULT constraint
F = FOREIGN KEY constraint
L = Log
P = Stored procedure
PK = PRIMARY KEY constraint (type is K)
RF = Replication filter stored procedure
S = System table
TR = Trigger
U = User table
UQ = UNIQUE constraint (type is K)
V = View
X = Extended stored procedure


Přidat komentář


Bezpečnostní kód
Obnovit