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 AdventureWorks2008R2;
GO
EXEC sp_recompile N'Sales.Customer';
GO