Эта публикация покажет вам несколько советов по сценариям для MS SQL Server.
1. Подождите
Оператор WAITFOR указывается одним из двух предложений:
(1) Ключевое слово DELAY, за которым следует количество времени, которое должно пройти до завершения оператора WAITFOR. Время ожидания перед выполнением оператора WAITFOR может составлять до 24 часов. Например,
-- Подождите десять секунд, прежде чем выполнять оператор выбора
ОЖИДАНИЕ ЗАДЕРЖКИ '00:00:10'
Выберите идентификатор сотрудника из Northwind.dbo.Employees
(2) Ключевое слово TIME, за которым следует время выполнения, которое указывает завершение инструкции WAITFOR.
Например,
-- Подождите до 22:00, чтобы проверить базу данных пабов и убедиться, что все страницы правильно распределены и используются.
Используйте пабы
НАЧИНАТЬ
ВРЕМЯ ОЖИДАНИЯ '22:00'
DBCC CHECKALLOC
КОНЕЦ
2. Включите отладку SQL
-- Хранимая процедура SP_SDIDEBUG используется SQL Server для отладки операторов Transact-SQL.
Использовать мастер
Разрешить выполнение SP_SDIDEBUG для имени пользователя
3. Выполнить динамически созданную строку.
(1) Инструкция EXECUTE
С помощью инструкции EXECUTE все значения параметров необходимо преобразовать в символьный формат или Юникод и сделать частью строки Transact-SQL. Например,
ОБЪЯВИТЬ @IntVariable INT
ОБЪЯВИТЬ @SQLString NVARCHAR(500)
/* Создаем и выполняем строку с одним значением параметра. */
НАБОР @IntVariable = 35
SET @SQLString = N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = ' +
CAST(@IntVariable AS NVARCHAR(10))
EXEC(@SQLString)
/* Создаем и выполняем строку со значением второго параметра. */
НАБОР @IntVariable = 201
SET @SQLString = N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = ' +
CAST(@IntVariable AS NVARCHAR(10))
EXEC(@SQLString)
(2) SP_ExecuteSQL
Для выполнения строки рекомендуется использовать sp_executesql, а не инструкцию EXECUTE. Поддержка подстановки параметров не только делает sp_executesql более универсальной, чем EXECUTE, но также делает sp_executesql более эффективной, поскольку она генерирует планы выполнения, которые с большей вероятностью будут повторно использованы SQL Server.
sp_executesql поддерживает установку значений параметров отдельно от строки Transact-SQL:
DECLARE @IntVariable INT
ОБЪЯВИТЬ @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
/* Создает строку SQL один раз. */
ЗАДАТЬ @SQLString =
N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = @level'
/* Укажите формат параметра один раз. */
SET @ParmDefinition = N'@level tinyint'
/* Выполнить строку со значением первого параметра. */
НАБОР @IntVariable = 35
ВЫПОЛНИТЬ sp_executesql @SQLString, @ParmDefinition,
@level = @IntVariable
/* Выполнить ту же строку со вторым значением параметра. */
НАБОР @IntVariable = 32
ВЫПОЛНИТЬ sp_executesql @SQLString, @ParmDefinition,
@level = @IntVariable
4. SP_HelpText
Печатает текст правила, значения по умолчанию или незашифрованной хранимой процедуры, пользовательской функции, триггера или представления.
-- В этом примере отображается текст триггера сотрудник_инсупд, который находится в базе данных пабов.
Используйте пабы
Exec sp_helptext 'employee_insupd'