2009-01-12 7 views
4

Comment trouvez-vous quels SP sont déclarés WITH RECOMPILE, soit dans INFORMATION_SCHEMA, sys.objects ou d'autres métadonnées?Comment trouver les métadonnées WITH RECOMPILE dans SQL Server (2005)?

(j'ajouter un code à mon système de surveillance de la santé et que vous souhaitez mettre en garde sur celles qui sont déclarées de cette façon où il ne se justifie pas.)

Note: Je ne suis pas à la recherche de recherche générale texte pour 'WITH RECOMPILE' - Je peux déjà le faire, mais cela donnera un faux positif pour toute version commentée ou littérale du texte.

Répondre

1

Pour un moyen rapide et sale j'utiliser:

SELECT 
    o.name 
FROM 
    syscomments c 
INNER JOIN sys.objects o ON 
    o.object_id = c.id 
WHERE 
    c.text LIKE '%WITH RECOMPILE%' 

C'est probablement pas une bonne idée pour une utilisation dans une application réelle bien. Si j'ai quelques minutes, je vais essayer de trouver un moyen plus propre. Ce qui précède va également attraper les procs qui ont cette chaîne commentée, il utilise la table spécifique MS SQL Server syscomments, etc.

+0

Droit - Je peux le faire, mais sans analyser le code et m'assurer qu'il n'est pas dans un commentaire ou un littéral ... –

1

Voici une requête que j'utilise pour rechercher des vues définies par l'utilisateur, des procédures stockées et des fonctions pour une chaîne de recherche donnée :

DECLARE @strSearch varchar(50) 
SELECT @strSearch = 'my search string' 

SELECT 
    so.[Name], 
    OBJECT_ID(so.[Name])  
FROM 
    [sysobjects] so 
JOIN 
    syscomments sc 
ON 
    sc.[ID] = OBJECT_ID(so.[Name]) 
WHERE 
    (so.[xtype] = 'FN' OR so.[xtype] = 'P' OR so.[xtype] = 'V') AND 
    so.[category] = 0 AND 
    sc.encrypted = 0 AND 
    sc.[text] like '%' + @strSearch + '%' 
+0

Merci, mais j'ai déjà quelque chose pour la recherche générale - le mien utilise un CTE et donne des lignes individuelles (pour plusieurs occurrences) et un extrait de code autour de l'occurrence. –

Questions connexes