Поделиться через


sp_recompile (Transact-SQL)

Вызывает перекомпиляцию хранимых процедур и триггеров при следующем запуске. Для этого из кэша процедур удаляется существующий план, в результате чего при следующем запуске процедуры или триггера создается новый план. В коллекции приложения SQL Server Profiler вместо события SP:Recompile в журнал записывается событие SP:CacheInsert.

Значок ссылки на разделСинтаксические обозначения языка Transact-SQL

Синтаксис

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