この投稿では、MS SQL Server に関するスクリプトのヒントをいくつか紹介します。
1. 待つ
WAITFOR ステートメントは、次の 2 つの句のいずれかで指定されます。
(1) DELAY キーワードの後に、WAITFOR ステートメントが完了するまでの経過時間を指定します。 WAITFOR ステートメントが完了するまでに待機する時間は、最大 24 時間になる場合があります。例えば、
-- select ステートメントを実行する前に 10 秒待機します。
待機遅延「00:00:10」
Select EmployeeID From Northwind.dbo.Employees
(2) TIME キーワードの後に実行時刻が続き、WAITFOR ステートメントの完了を指定します。
例えば、
-- PM 10:00 まで待って、pubs データベースのチェックを実行し、すべてのページが正しく割り当てられ、使用されていることを確認します。
パブを利用する
始める
待ち時間「22:00」
DBCC チェックアロック
終了
2. SQL デバッグを有効にする
-- SP_SDIDEBUG ストアド プロシージャは、SQL Server が Transact-SQL ステートメントをデバッグするために使用します。
マスターを使用する
SP_SDIDEBUG での実行をユーザー名に付与します
。 3. 動的に構築された文字列を実行します。
(1) EXECUTE文
EXECUTE ステートメントでは、すべてのパラメータ値を文字または Unicode に変換し、Transact-SQL 文字列の一部にする必要があります。例えば、
@IntVariable INT を宣言する
DECLARE @SQLString NVARCHAR(500)
/* 1 つのパラメータ値を含む文字列を構築して実行します。 */
SET @IntVariable = 35
SET @SQLString = N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = ' +
CAST(@IntVariable AS NVARCHAR(10))
EXEC(@SQLString)
/* 2 番目のパラメータ値を使用して文字列を構築して実行します。 */
SET @IntVariable = 201
SET @SQLString = N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = ' +
CAST(@IntVariable AS NVARCHAR(10))
EXEC(@SQLString)
(2) SP_ExecuteSQL
文字列を実行するには、EXECUTE ステートメントを使用するよりも sp_executesql を使用することをお勧めします。パラメーター置換のサポートにより、sp_executesql は EXECUTE よりも汎用性が高くなるだけでなく、SQL Server によって再利用される可能性が高い実行プランが生成されるため、sp_executesql の効率も向上します。
sp_executesql は、Transact-SQL 文字列とは別にパラメータ値の設定をサポートしています:
DECLARE @IntVariable INT
DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
/* SQL 文字列を 1 回構築します。 */
SET @SQLString =
N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = @level'
/* パラメータの形式を 1 回指定します。 */
SET @ParmDefinition = N'@level tinyint'
/* 最初のパラメータ値を使用して文字列を実行します。 */
SET @IntVariable = 35
EXECUTE sp_executesql @SQLString、@ParmDefinition、
@level = @IntVariable
/* 2 番目のパラメータ値を使用して同じ文字列を実行します。 */
SET @IntVariable = 32
EXECUTE sp_executesql @SQLString、@ParmDefinition、
@level = @IntVariable
4. SP_HelpText
ルール、デフォルト、または暗号化されていないストアド プロシージャ、ユーザー定義関数、トリガー、またはビューのテキストを出力します。
-- この例では、pubs データベースにあるemployee_insupd トリガーのテキストを表示します。
パブを利用する
sp_helptext 'employee_insupd' を実行