Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описывается, как выполнить хранимую процедуру в SQL Server 2014 с помощью SQL Server Management Studio или Transact-SQL.
Существует два разных способа выполнения хранимой процедуры. Первым и наиболее распространенным подходом является вызов процедуры приложением или пользователем. Второй подход — задать процедуру для автоматического выполнения при запуске экземпляра SQL Server. Когда процедура вызывается приложением или пользователем, ключевое слово Transact-SQL EXECUTE или EXEC явно указывается в вызове. Кроме того, процедура может вызываться и выполняться без ключевого слова, если процедура является первой инструкцией в пакете Transact-SQL.
В этом разделе
Перед началом:
Для выполнения хранимой процедуры используется:
Перед началом работы
Ограничения и условия
При сопоставлении имен системных процедур используется сортировка вызывающей базы данных. Поэтому всегда используйте точное написание имен системных процедур в вызовах процедур. Например, этот код завершится ошибкой при выполнении в контексте базы данных с регистрозависимой сортировкой.
EXEC SP_heLP; -- Will fail to resolve because SP_heLP does not equal sp_help
Чтобы показать точные имена системных процедур, запросите представления каталога sys.system_objects и sys.system_parameters .
Если определяемая пользователем процедура имеет имя, совпадающее с системной процедурой, то такая определяемая пользователем процедура никогда не будет выполняться.
Рекомендации
Выполнение системных хранимых процедур
Системные процедуры начинаются с префикса sp_. Поскольку они логически присутствуют во всех пользовательских и системных базах данных, их можно выполнять из любой базы данных без необходимости полного указания имени процедуры. Тем не менее мы рекомендуем присваивать всем именам системных процедур имя схемы sys, чтобы предотвратить конфликты имен. В следующем примере показан рекомендуемый метод вызова системной процедуры.
EXEC sys.sp_who;
Выполнение определяемых пользователем хранимых процедур
При выполнении пользовательской процедуры рекомендуется указать имя процедуры вместе с именем схемы. Эта практика повышает производительность, так как ядро СУБД не требует поиска нескольких схем. Он также предотвращает выполнение неправильной процедуры, если база данных имеет процедуры с одинаковым именем в нескольких схемах.
В следующем примере показан рекомендуемый метод для выполнения определяемой пользователем процедуры. Обратите внимание, что процедура принимает один входной параметр. Сведения об указании входных и выходных параметров см. в разделе "Указание параметров".
USE AdventureWorks2012; GO EXEC dbo.uspGetEmployeeManagers @BusinessEntityID = 50;
-Или-
EXEC AdventureWorks2012.dbo.uspGetEmployeeManagers 50; GO
Если указана неквалифицированная пользовательская процедура, ядро СУБД выполняет поиск процедуры в следующем порядке:
Схема систем текущей базы данных.
Схема по умолчанию вызывающего, если она выполняется в пакетном запросе или в динамическом SQL. Или, если имя неквалифицированной процедуры появляется в теле другого определения процедуры, затем ищется схема, содержащая эту другую процедуру.
Схема dbo в текущей базе данных.
Автоматическое выполнение хранимых процедур
Процедуры, помеченные для автоматического выполнения, выполняются при каждом запуске SQL Server и восстановлении базы данных master во время запуска. Настройка процедур для автоматического выполнения удобна для операций обслуживания базы данных и для постоянного выполнения процедур в фоновом процессе. Другим способом автоматического выполнения является выполнение процедур выполнения задач системы или обслуживания в tempdb, таких как создание глобальной временной таблицы. Это гарантирует, что такая временная таблица всегда будет существовать при повторном создании tempdb во время запуска SQL Server.
Процедура, которая автоматически выполняется, работает с теми же разрешениями, что и члены предопределенной роли сервера sysadmin . Все сообщения об ошибках, созданные процедурой, записываются в журнал ошибок SQL Server.
Количество выполняемых процедур запуска не ограничено, но следует учитывать, что каждый из них использует один рабочий поток во время выполнения. Если необходимо выполнить несколько процедур при запуске, но не нужно выполнять их параллельно, сделайте одну процедуру запуска и вызовите эту процедуру для вызова других процедур. В этом случае используется только один рабочий поток.
Подсказка
Не возвращайте результирующие наборы из процедуры, выполняемой автоматически. Поскольку процедура выполняется SQL Server, а не приложением или пользователем, результирующим наборам данных некуда попадать.
Настройка, очистка и управление автоматическим выполнением задач
Только системный администратор (sa) может пометить процедуру для автоматического выполнения. Кроме того, процедура должна находиться в базе данных master , принадлежащей sa, и не может иметь входные или выходные параметры.
Используйте sp_procoption для:
Назначьте существующую процедуру запуска.
Остановите выполнение процедуры при запуске SQL Server.
Безопасность
Дополнительные сведения см. в разделе EXECUTE AS (Transact-SQL) и предложение EXECUTE AS (Transact-SQL).
Разрешения
Дополнительные сведения см. в разделе "Разрешения" в EXECUTE (Transact-SQL).
Использование среды SQL Server Management Studio
Выполнение хранимой процедуры
В Обозревателе объектов подключитесь к экземпляру ядра СУБД SQL Server, разверните этот экземпляр и разверните Базы данных.
Разверните нужную базу данных, разверните узлы Программированиеи Хранимые процедуры.
Щелкните правой кнопкой мыши определяемую пользователем хранимую процедуру и нажмите кнопку "Выполнить хранимую процедуру".
В диалоговом окне "Выполнение процедуры " укажите значение для каждого параметра и следует ли передать значение NULL.
Параметр
Указывает имя параметра.Тип данных
Указывает тип данных параметра.Выходной параметр
Указывает, является ли это выходным параметром.Передайте значение NULL
Передайте значение NULL в качестве значения параметра.Ценность
Введите значение параметра при вызове процедуры.Чтобы выполнить хранимую процедуру, нажмите кнопку "ОК".
Использование Transact-SQL
Выполнение хранимой процедуры
Подключитесь к движку СУБД.
На панели «Стандартная» нажмите Создать запрос.
Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить. В этом примере показано, как выполнить хранимую процедуру, которая ожидает один параметр. В примере выполняется хранимая процедура
uspGetEmployeeManagers
со значением6
, указанным как параметр@EmployeeID
.
USE AdventureWorks2012;
GO
EXEC dbo.uspGetEmployeeManagers 6;
GO
Настройка или очистка процедуры автоматического выполнения
Подключитесь к движку СУБД.
На панели «Стандартная» нажмите Создать запрос.
Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить. В этом примере показано, как использовать sp_procoption для задания процедуры автоматического выполнения.
USE AdventureWorks2012;
GO
EXEC sp_procoption @ProcName = '<procedure name>'
, @OptionName = ] 'startup'
, @OptionValue = 'on';
Остановка автоматической выполнения процедуры
Подключитесь к движку СУБД.
На панели «Стандартная» нажмите Создать запрос.
Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить. В этом примере показано, как использовать sp_procoption для предотвращения автоматического выполнения процедуры.
USE AdventureWorks2012;
GO
EXEC sp_procoption @ProcName = '<procedure name>'
, @OptionValue = 'off';
Пример (Transact-SQL)
См. также
Указание параметров
Настройка параметра конфигурации сервера для сканирования начальных процессов
EXECUTE (Transact-SQL)
СОЗДАТЬ ПРОЦЕДУРУ (Transact-SQL)
Хранимые процедуры (ядро СУБД)