Overblog Folge diesem Blog
Edit post Administration Create my blog
Blog von Olaf Helper

T-SQL Objekt-Definitionen durchsuchen

22. Januar 2009 , Geschrieben von Olaf Helper Veröffentlicht in #T-SQL

Bei Designänderungen Im MS Sql Server muss man alle eventuellen Seiteneffekte beachten, spricht man muss prüfen, welche Auswirkungen die Änderungen auf abhängige Objekte haben. Natürlich hat man alles gut dokumentiert, so dass man schnell herausfindet, welche Objekte eben abhängig von einem anderen sind.

Aber nur um ganz sicher zu gehen ;-), kann man die Objekt-Definitionen auch in der Datenbank per SQL durchsuchen lassen, schließlich muss der SQL Server es ja am besten wissen, wie was zusammenhängt.

Mit dem folgenden Script kann man das erledigt. Wie immer gibt es eine kleine Einschränkung, verschlüsselt angelegte Objekte, also die mit der Option ENCRYPTION, können natürlich nicht im Klartext durchsucht werden; CLR Assemblies erst recht nicht; ist logo.
 

 SELECT OBJ.name, OBJ.xtype, PAR.name AS Parent, 
  COM.Text 
 FROM sys.syscomments AS COM 
  INNER JOIN 
  sys.sysobjects AS OBJ 
  ON COM.id = OBJ.id 
  LEFT JOIN  
  sys.sysobjects AS PAR 
  ON PAR.id = OBJ.parent_obj 
 WHERE OBJ.xtype IN ('P ', 'TR', 'FN', 'V ') 
  AND COM.Text LIKE '%SalesPerson%' 
 ORDER BY OBJ.xtype, OBJ.name, PAR.name 

 

Ergebnis:



Hier noch eine zweite Variante, die das Systemview sys.sql_modules verwendet:

 -- Objektdefinition nach Begriffen durchsuchen 
 SELECT OBJSCH.name AS ObjectSchema, OBJ.name AS ObjectName, 
  OBJ.type_desc AS ObjectType, 
  PARSCH.name AS ParentSchema, PAR.name AS ParentName, 
  PAR.type_desc AS ParentType, 
  MOD.definition,  
  OBJ.create_date, OBJ.modify_date 
 FROM sys.sql_modules AS MOD 
  INNER JOIN sys.objects AS OBJ 
  ON MOD.object_id = OBJ.object_id 
  INNER JOIN sys.schemas AS OBJSCH 
  ON OBJ.schema_id = OBJSCH.schema_id 
  LEFT JOIN sys.objects AS PAR 
  ON PAR.object_id = OBJ.parent_object_id 
  LEFT JOIN sys.schemas AS PARSCH 
  ON PAR.schema_id = PAR.schema_id 
 WHERE MOD.definition LIKE '%SalesPerson%' 
 ORDER BY OBJ.name, PAR.name 

 

Diesen Post teilen

Repost 0

Kommentiere diesen Post