sp_recompile (Transact-SQL)
Bewirkt, dass gespeicherte Prozeduren und Trigger beim nächsten Ausführen erneut kompiliert werden. Dazu wird der vorhandene Plan aus dem Prozedurcache gelöscht, sodass beim nächsten Ausführen der Prozedur oder des Triggers das Erstellen eines neuen Plans erzwungen wird. In einer SQL Server Profiler-Auflistung wird das Ereignis SP:CacheInsert anstelle des Ereignisses SP:Recompile protokolliert.
Syntax
sp_recompile [ @objname= ] 'object'
Argumente
- [ @objname = ] 'object'
Der qualifizierte oder nicht qualifizierte Name einer gespeicherten Prozedur, eines Triggers, einer Tabelle oder einer Sicht in der aktuellen Datenbank. object ist vom Datentyp nvarchar(776) und weist keinen Standardwert auf. Wenn object der Name einer gespeicherten Prozedur oder eines Triggers ist, werden diese erneut kompiliert, wenn sie das nächste Mal ausgeführt werden. Wenn object der Name einer Tabelle oder Sicht ist, werden alle gespeicherten Prozeduren, die auf diese Tabelle oder Sicht verweisen, erneut kompiliert, wenn sie das nächste Mal ausgeführt werden.
Rückgabecodewerte
0 (Erfolg) oder eine Zahl ungleich Null (Fehler)
Hinweise
sp_recompile sucht nur in der aktuellen Datenbank nach einem Objekt.
Die Abfragen, die von gespeicherten Prozeduren und Triggern durchgeführt werden, werden nur bei der Prozedur- oder Triggerkompilierung optimiert. Wenn Sie Indizes bearbeiten oder andere Änderungen an der Datenbank vornehmen, die sich auf Statistiken beziehen, kann dies die Effizienz von gespeicherten Prozeduren oder Triggern beeinträchtigen. Durch das erneute Kompilieren der gespeicherten Prozeduren und Trigger, die auf eine Tabelle zugreifen, können solche Abfragen wieder optimiert werden.
Hinweis |
---|
SQL Server kompiliert gespeicherte Prozeduren und Trigger automatisch neu, wenn dies von Vorteil ist. |
Berechtigungen
Erfordert die ALTER-Berechtigung für das angegebene Objekt.
Beispiele
Im folgenden Beispiel werden gespeicherte Prozeduren, die auf die Customer-Tabelle zugreifen, erneut kompiliert, wenn sie das nächste Mal ausgeführt werden.
USE AdventureWorks;
GO
EXEC sp_recompile N'Sales.Customer';
GO