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