Новости

Виконання процедури, - SQL Server

  1. Перед початком Before You Begin
  2. рекомендації Recommendations
  3. безпеку Security
  4. Permissions Permissions
  5. Використання середовища SQL Server Management Studio Using SQL Server Management Studio
  6. Використання Transact-SQL Using Transact-SQL
  7. Установка і скасування автоматичного запуску процедури To set or clear a procedure for executing automatically
  8. Скасування автоматичного виконання процедури To stop a procedure from executing automatically
  9. Приклади (Transact-SQL) Example (Transact-SQL)

ОБЛАСТЬ ЗАСТОСУВАННЯ: ОБЛАСТЬ ЗАСТОСУВАННЯ:   SQL Server   База даних SQL Azure   Сховище даних SQL Azure   Parallel Data Warehouse APPLIES TO:   SQL Server   Azure SQL Database   Azure SQL Data Warehouse   Parallel Data Warehouse   У цьому розділі описується, як виконати збережену процедуру SQL Server 2017 SQL Server 2017 за допомогою середовища SQL Server Management Studio SQL Server Management Studio або Transact-SQL Transact-SQL SQL Server База даних SQL Azure Сховище даних SQL Azure Parallel Data Warehouse APPLIES TO: SQL Server Azure SQL Database Azure SQL Data Warehouse Parallel Data Warehouse

У цьому розділі описується, як виконати збережену процедуру SQL Server 2017 SQL Server 2017 за допомогою середовища SQL Server Management Studio SQL Server Management Studio або Transact-SQL Transact-SQL. This topic describes how to execute a stored procedure in SQL Server 2017 SQL Server 2017 by using SQL Server Management Studio SQL Server Management Studio or Transact-SQL Transact-SQL.

Існує два способи виконання процедури. There are two different ways to execute a stored procedure. Першим і найбільш поширеним підходом є виклик процедури додатком або користувачем. The first and most common approach is for an application or user to call the procedure. Другий підхід - настройка автоматичного виконання процедури при запуску екземпляра SQL Server SQL Server. The second approach is to set the procedure to run automatically when an instance of SQL Server SQL Server starts. Якщо процедура викликається додатком або користувачем, то у виклику явно вказується ключове слово Transact-SQL Transact-SQL EXECUTE або EXEC. When a procedure is called by an application or user, the Transact-SQL Transact-SQL EXECUTE or EXEC keyword is explicitly stated in the call. Процедуру також можна викликати і виконувати без ключового слова, якщо вона є першою інструкцією в пакеті Transact-SQL Transact-SQL. Alternatively, the procedure can be called and executed without the keyword if the procedure is the first statement in the Transact-SQL Transact-SQL batch.

В цьому розділі In This Topic

Перед початком Before You Begin

Обмеження Limitations and Restrictions

  • При зіставленні імен системних процедур використовуються параметри сортування викликає бази даних. The calling database collation is used when matching system procedure names. Таким чином, у виклику процедур слід завжди використовувати точний реєстр імен системних процедур. Therefore, always use the exact case of system procedure names in procedure calls. Наприклад, цей код завершиться з помилкою при виконанні в контексті бази даних, в параметрах сортування якій враховується регістр: For example, this code will fail if it is executed in the context of a database that has a case-sensitive collation:

    EXEC SP_heLP; - Will fail to resolve because SP_heLP does not equal sp_help

    Щоб показати точні імена системних процедур, запросите подання каталогу sys.system_objects і sys.system_parameters . To display the exact system procedure names, query the sys.system_objects and sys.system_parameters catalog views.

  • Якщо обумовлена ​​користувачем процедура має ім'я, що збігається з системної процедурою, то така обумовлена ​​користувачем процедура ніколи не буде виконуватися. If a user-defined procedure has the same name as a system procedure, the user-defined procedure might not ever execute.

рекомендації Recommendations

  • Виконання системних збережених процедур Executing System Stored Procedures

    Імена системних процедур починаються із префікса sp_. System procedures begin with the prefix sp_. Оскільки вони логічно відображаються у всіх базах даних, які визначаються і користувачем, і системою, то вони можуть виконуватися з будь-якої бази даних без повного вказівки імені процедури. Because they logically appear in all user- and system- defined databases, they can be executed from any database without having to fully qualify the procedure name. Однак рекомендується уточнювати імена всіх системних процедур зазначенням схеми sys щоб уникнути конфліктів імен. However, we recommend schema-qualifying all system procedure names with the sys schema name to prevent name conflicts . У наступному прикладі демонструється рекомендований метод виклику системної процедури. The following example demonstrates the recommended method of calling a system procedure.

    EXEC sys.sp_who;
  • Виконання користувальницьких збережених процедур Executing User-defined Stored Procedures

    При виконанні настройки користувача процедури рекомендується додатково вказувати ім'я схеми. When executing a user-defined procedure, we recommend qualifying the procedure name with the schema name. Це дозволяє трохи збільшити продуктивність, оскільки компоненту Компонент Database Engine Database Engine не потрібно виконувати пошук в декількох схемах. This practice gives a small performance boost because the Компонент Database Engine Database Engine does not have to search multiple schemas. Також виключається виконання неправильну процедуру в разі, якщо в декількох схемах бази даних є процедури з одним ім'ям. It also prevents executing the wrong procedure if a database has procedures with the same name in multiple schemas.

    У наступному прикладі демонструється рекомендований метод виконання настройки користувача процедури. The following example demonstrates the recommended method to execute a user-defined procedure. Зверніть увагу, що процедура приймає один вхідний параметр. Notice that the procedure accepts one input parameter. Відомості про надання вхідних і вихідних параметрів см. В статті вказівка ​​параметрів . For information about specifying input and output parameters, see Specify Parameters .

    USE AdventureWorks2012; GO EXEC dbo.uspGetEmployeeManagers @BusinessEntityID = 50;

    -або- -Or-

    EXEC AdventureWorks2012.dbo.uspGetEmployeeManagers 50; GO

    Якщо не вказано уточнене ім'я настройки користувача процедури, компонент Компонент Database Engine Database Engine здійснює пошук процедури в наступному порядку. If a nonqualified user-defined procedure is specified, the Компонент Database Engine Database Engine searches for the procedure in the following order:

    1. схема sys поточної бази даних; The sys schema of the current database.

    2. Схема за замовчуванням викликає програми при виконанні в пакеті або в динамічному коді SQL. The caller's default schema if it is executed in a batch or in dynamic SQL. Якщо неуточнений ім'я процедури присутній в тексті визначення іншої процедури, в наступну чергу виконується пошук в схемі, що містить іншу процедуру. Or, if the nonqualified procedure name appears inside the body of another procedure definition, the schema that contains this other procedure is searched next.

    3. Схема dbo в поточній базі даних. The dbo schema in the current database.

  • Автоматичне виконання збережених процедур Executing Stored Procedures Automatically

    Процедури, помічені для автоматичного виконання, виконуються кожен раз, коли запускається SQL Server SQL Server і в процесі запуску відновлюється база даних master. Procedures marked for automatic execution are executed every time SQL Server SQL Server starts and the master database is recovered during that startup process . Налаштування процедур для автоматичного виконання зручна для операцій обслуговування бази даних і для постійного виконання процедур в фоновому процесі. Setting up procedures to execute automatically can be useful for performing database maintenance operations or for having procedures run continuously as background processes. Крім того, автоматичний запуск процедур може застосовуватися для виконання системних або службових завдань в базі даних tempdb, таких як створення глобальної тимчасової таблиці. Another use for automatic execution is to have the procedure perform system or maintenance tasks in tempdb , such as creating a global temporary table. Це забезпечує наявність такої тимчасової таблиці при повторному створенні бази даних tempdb під час запуску SQL Server SQL Server. This makes sure that such a temporary table will always exist when tempdb is re -created during SQL Server SQL Server startup.

    Автоматично виконується процедура працює з тими ж дозволами, що і члени зумовленої ролі сервера sysadmin. A procedure that is automatically executed operates with the same permissions as members of the sysadmin fixed server role . Будь-яке повідомлення про помилку, сформований такою процедурою, записується в журнал помилок SQL Server SQL Server. Any error messages generated by the procedure are written to the SQL Server SQL Server error log.

    Обмежень на кількість автоматично запускаються процедур не існує, однак пам'ятайте, що для виконання кожної необхідний один робочий потік. There is no limit to the number of startup procedures you can have, but be aware that each consumes one worker thread while executing. Якщо необхідно виконати декілька процедур при запуску, які не повинні виконуватися паралельно, налаштуйте одну процедуру на автоматичний запуск, а другу викликайте в її тілі (в кінці). If you must execute multiple procedures at startup but do not need to execute them in parallel, make one procedure the startup procedure and have that procedure call the other procedures. Таким чином буде задіяний тільки один робочий потік. This uses only one worker thread.

    Порада

    Чи не повертайте ніяких результуючих наборів з автоматично запускається процедури. Do not return any result sets from a procedure that is executed automatically. Ця збережена процедура виконується SQL Server SQL Server, а не додатком або користувачем, і тому результуючі набори ніде не обробляються. Because the procedure is being executed by SQL Server SQL Server instead of an application or user, there is nowhere for the result sets to go.

  • Установка, очищення та контроль автоматичного виконання Setting, Clearing, and Controlling Automatic Execution

    Позначати процедуру для автоматичного виконання може тільки системний адміністратор (sa). Only the system administrator (sa) can mark a procedure to execute automatically. Крім того, процедура повинна знаходитися в базі даних master, належати користувачеві sa і не мати вхідних або вихідних параметрів. In addition, the procedure must be in the master database, owned by sa, and can not have input or output parameters.

    використовуйте процедуру sp_procoption щоб: Use sp_procoption to:

    1. позначити існуючу процедуру як автоматично запускається; Designate an existing procedure as a startup procedure.

    2. скасувати виконання процедури при запуску SQL Server SQL Server. Stop a procedure from executing at SQL Server SQL Server startup.

безпеку Security

Додаткові відомості див. У статтях EXECUTE AS (Transact-SQL) і EXECUTE AS Clause (Transact-SQL) . For more information, see EXECUTE AS (Transact-SQL) and EXECUTE AS Clause (Transact-SQL) .

Permissions Permissions

Додаткові відомості див. У розділі "Дозволи" статті EXECUTE (Transact-SQL) . For more information, see the "Permissions" section in EXECUTE (Transact-SQL) .

Використання середовища SQL Server Management Studio Using SQL Server Management Studio

Виконання процедури, що To execute a stored procedure

  1. У браузері об'єктів підключіться до примірника компонента Компонент SQL Server Database Engine SQL Server Database Engine, розгорніть його, а потім розгорніть вузол Бази даних. In Object Explorer, connect to an instance of the Компонент SQL Server Database Engine SQL Server Database Engine, expand that instance, and then expand Databases.

  2. Розгорніть потрібну базу даних, розгорніть вузли Програмування та Збережені процедури. Expand the database that you want, expand Programmability, and then expand Stored Procedures.

  3. Клацніть правою кнопкою миші визначається користувачем збережену процедуру і виберіть команду Виконати збережену процедуру. Right-click the user-defined stored procedure that you want and click Execute Stored Procedure .

  4. У діалоговому вікні Виконання процедури вкажіть значення для кожного параметра і необхідність передачі значення NULL. In the Execute Procedure dialog box, specify a value for each parameter and whether it should pass a null value .

    параметр Parameter
    Вказує ім'я параметра. Indicates the name of the parameter.

    Тип даних Data Type
    Вказує тип даних параметра. Indicates the data type of the parameter.

    Вихідний параметр Output Parameter
    Вказує, чи є цей параметр вихідним. Indicates if this is an output parameter.

    Передати значення NULL Pass Null Value
    Передати значення NULL в якості значення параметра. Pass a NULL as the value of the parameter.

    значення Value
    Введіть значення параметра, що передається йому при виклику процедури. Type the value for the parameter when calling the procedure.

  5. Щоб виконати збережену процедуру, натисніть кнопку ОК. To execute the stored procedure, click OK.

Використання Transact-SQL Using Transact-SQL

Виконання процедури, що To execute a stored procedure

  1. Встановіть з'єднання з компонентом Компонент Database Engine Database Engine. Connect to the Компонент Database Engine Database Engine.

  2. На панелі «Стандартна» натисніть Створити запит. From the Standard bar, click New Query.

  3. Скопіюйте наступний приклад у вікно запиту і натисніть кнопку Виконати. Copy and paste the following example into the query window and click Execute . Цей приклад демонструє, як виконати збережену процедуру, яка приймає один параметр. This example shows how to execute a stored procedure that expects one parameter. У прикладі виконується процедура, що зберігається uspGetEmployeeManagers зі значенням 6, зазначеним в параметрі @EmployeeID. The example executes the uspGetEmployeeManagers stored procedure with the value 6 specified as the @EmployeeID parameter.

USE AdventureWorks2012; GO EXEC dbo.uspGetEmployeeManagers 6; GO

Установка і скасування автоматичного запуску процедури To set or clear a procedure for executing automatically

  1. Встановіть з'єднання з компонентом Компонент Database Engine Database Engine. Connect to the Компонент Database Engine Database Engine.

  2. На панелі «Стандартна» натисніть Створити запит. From the Standard bar, click New Query.

  3. Скопіюйте наступний приклад у вікно запиту і натисніть кнопку Виконати. Copy and paste the following example into the query window and click Execute . Цей приклад демонструє, як використовувати процедуру sp_procoption , Щоб задати автоматичне виконання процедури. This example shows how to use sp_procoption to set a procedure for automatic execution.

USE AdventureWorks2012; GO EXEC sp_procoption @ProcName = '<procedure name>', @OptionName =] 'startup', @OptionValue = 'on';

Скасування автоматичного виконання процедури To stop a procedure from executing automatically

  1. Встановіть з'єднання з компонентом Компонент Database Engine Database Engine. Connect to the Компонент Database Engine Database Engine.

  2. На панелі «Стандартна» натисніть Створити запит. From the Standard bar, click New Query.

  3. Скопіюйте наступний приклад у вікно запиту і натисніть кнопку Виконати. Copy and paste the following example into the query window and click Execute . Цей приклад демонструє, як використовувати процедуру sp_procoption , Щоб скасувати автоматичне виконання процедури. This example shows how to use sp_procoption to stop a procedure from executing automatically.

USE AdventureWorks2012; GO EXEC sp_procoption @ProcName = '<procedure name>', @OptionValue = 'off';

Приклади (Transact-SQL) Example (Transact-SQL)

Див. Також: See Also

вказівка ​​параметрів Specify Parameters
Налаштування параметра конфігураци і сервера scan for startup procs Configure the scan for startup procs Server Configuration Option
EXECUTE (Transact-SQL) EXECUTE (Transact-SQL)
CREATE PROCEDURE (Transact-SQL) CREATE PROCEDURE (Transact-SQL)
Збережені процедури (компонент Database Engine) Stored Procedures (Database Engine)

Уважаемые партнеры, если Вас заинтересовала наша продукция, мы готовы с Вами сотрудничать. Вам необходимо заполнить эту форму и отправить нам. Наши менеджеры в оперативном режиме обработают Вашу заявку, свяжутся с Вами и ответят на все интересующее Вас вопросы.

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: