4 Stimmen

Wie findet man WITH RECOMPILE-Metadaten in SQL Server (2005)?

Wie finden Sie heraus, welche SPs mit RECOMPILE deklariert sind, entweder in INFORMATION_SCHEMA, sys.objects oder in anderen Metadaten?

(Ich füge einige Codes zur Überwachung des Systemzustands hinzu und möchte vor denjenigen warnen, die auf diese Weise deklariert werden, wenn dies nicht zu rechtfertigen ist).

Hinweis: Ich bin nicht auf der Suche nach einer allgemeinen Textsuche nach "WITH RECOMPILE" - das kann ich bereits, aber es würde zu falschen Ergebnissen bei allen kommentierten oder wörtlichen Versionen des Textes führen.

1voto

Tom H Punkte 45699

Für einen schnellen und schmutzigen Weg würde ich verwenden:

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

Das ist aber wahrscheinlich keine gute Idee für den Einsatz in einer tatsächlichen Anwendung. Wenn ich ein paar Minuten Zeit habe, werde ich versuchen, eine sauberere Lösung zu finden. Die obige Methode fängt auch Procs ab, bei denen die Zeichenkette auskommentiert ist, sie verwendet die MS SQL Server-spezifische Tabelle syscomments usw.

0 Stimmen

Richtig - das kann ich tun, aber ohne den Code zu analysieren und sicherzustellen, dass er nicht in einem Kommentar oder einem Literal steht...

1voto

Jeremy Punkte 42888

Hier ist eine Abfrage, die ich verwende, um benutzerdefinierte Ansichten, gespeicherte Prozeduren und Funktionen nach einem bestimmten Suchbegriff zu durchsuchen:

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 Stimmen

Danke, aber ich habe bereits etwas für die allgemeine Suche - meine verwendet eine CTE und gibt einzelne Zeilen (für mehrere Vorkommen) und einen Codeschnipsel um das Vorkommen.

0voto

Cade Roux Punkte 85601

Dank an GSquared auf SQL Server Zentrale Foren Ich habe es gefunden, es gibt ein Flag namens is_recompiled in sys.sql_modules .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X