sp_recompile (Transact-SQL)
Вызывает перекомпиляцию хранимых процедур и триггеров при следующем запуске. Для этого из кэша процедур удаляется существующий план, в результате чего при следующем запуске процедуры или триггера создается новый план. В коллекции приложения SQL Server Profiler вместо события SP:Recompile в журнал записывается событие SP:CacheInsert.
Синтаксис
sp_recompile [ @objname= ] 'object'
Аргументы
- [ @objname = ] 'object'
Полное или неполное имя хранимой процедуры, триггера, таблицы или представления текущей базы данных. Аргумент object имеет тип nvarchar(776) и не имеет значения по умолчанию. Если аргумент object — это имя хранимой процедуры или триггера, то эта процедура или триггер будут перекомпилированы при следующем запуске. Если аргумент object — это имя таблицы или представления, то все хранимые процедуры, которые ссылаются таблицу или представление, будут перекомпилированы при следующем запуске.
Значения кодов возврата
0 (успешное завершение) или ненулевое значение (неуспешное завершение)
Замечания
Процедура sp_recompile ищет объект только в текущей базе данных.
Запросы, применяемые хранимыми процедурами и триггерами, оптимизируются только при компиляции. При изменениях базы данных, влияющих на статистику, эффективность компилируемых хранимых процедур и триггеров может понижаться. Путем перекомпиляции хранимых процедур и триггеров, влияющих на таблицу, можно повторно оптимизировать запросы.
![]() |
---|
SQL Server автоматически перекомпилирует хранимые процедуры и триггеры, когда это удобно. |
Разрешения
Необходимо разрешение ALTER для объекта.
Примеры
В приведенном ниже примере хранимые процедуры, влияющие на таблицу Customer, перекомпилируются при следующем запуске.
USE AdventureWorks;
GO
EXEC sp_recompile N'Sales.Customer';
GO