クエリ エディタによる SQLCMD スクリプトの編集

更新 : 2006 年 7 月 17 日

Microsoft SQL Server のクエリ エディタでは、クエリを SQLCMD スクリプトとして作成したり、編集したりできます。クエリ エディタで SQLCMD スクリプトを操作するときには、あらゆる Transact-SQL スクリプトと同じ機能を使用できます。使用できる機能には、次のようなものがあります。

  • コードの色分け
  • スクリプトの実行
  • ソース管理
  • スクリプトの解析
  • プラン表示

クエリ エディタで SQLCMD スクリプト操作を有効にする方法

SQL Server のクエリ エディタで SQLCMD スクリプトの作成や編集を行うには、スクリプト モードを有効にする必要があります。クエリ エディタのスクリプト モードは、既定では有効ではありません。スクリプト モードを有効にするには、ツール バーの [SQLCMD モード] アイコンをクリックするか、[クエリ] メニューの [SQLCMD モード] をクリックします。これらの方法によって、現在のウィンドウの SQLCMD スクリプト操作をオンにできます。

クエリ エディタ ウィンドウを SQLCMD モードに切り替えるには

  1. オブジェクト エクスプローラで、サーバーを右クリックして [新しいクエリ] をクリックし、新しいクエリ エディタ ウィンドウを開きます。

  2. [クエリ] メニューの [SQLCMD モード] をクリックします。

    クエリ エディタ ウィンドウのコンテキストで sqlcmd ステートメントが実行されます。

  3. [SQL エディタ] ツール バーの [使用できるデータベース] の一覧で、[AdventureWorks] データベースを選択します。

  4. クエリ エディタ ウィンドウに、次の 2 つの Transact-SQL ステートメントおよび !!DIR sqlcmd ステートメントを入力します。

    SELECT DISTINCT Type FROM Sales.SpecialOffer;
    GO
    !!DIR
    GO
    SELECT ProductCategoryID, Name FROM Production.ProductCategory;
    GO
    
  5. F5 キーを押して、Transact-SQL ステートメントと MS-DOS ステートメントが混在するセクション全体を実行します。

    1 番目と 3 番目のステートメントにより、2 つの SQL 結果ペインが表示されます。

  6. 結果ペインの [メッセージ] タブをクリックし、3 つのステートメントすべてから取得されたメッセージを確認します。

    • (6 行処理されました)
    • <ディレクトリ情報>
    • (4 行処理されました)
ms174187.note(ja-jp,SQL.90).gif重要 :
コマンド ラインから実行すると、sqlcmd ユーティリティはオペレーティング システムとの完全な対話が可能になります。クエリ エディタを SQLCMD モードで使用する場合は、対話型のステートメントを実行しないように注意してください。クエリ エディタは、オペレーティング システムのプロンプトに応答できません。

SQLCMD の実行方法の詳細については、「sqlcmd ユーティリティ」または SQLCMD のチュートリアルを参照してください。

SQLCMD スクリプト操作を既定で有効にする方法

SQLCMD スクリプト操作を既定でオンにするには、[ツール] メニューの [オプション] をクリックし、[クエリ実行][SQL Server] の順に展開します。次に、[全般] ページをクリックし、[既定で、新しいクエリを SQLCMD モードで開始する] チェック ボックスをオンにします。

SQLCMD スクリプトの作成と編集

スクリプト モードを有効にしたら、SQLCMD コマンドと Transact-SQL ステートメントを作成できます。この場合に当てはまる規則を以下に示します。

  • SQLCMD コマンドは行の最初のステートメントでなければなりません。
  • 各行に 1 つの SQLCMD コマンドだけを記述できます。
  • SQLCMD コマンドの前にコメントや空白文字を入れてもかまいません。
  • コメント文字の間にはさまれた SQLCMD コマンドは実行されません。
  • 1 行のコメント文字は 2 つのハイフン (--) であり、行の先頭に置く必要があります。
  • オペレーティング システム コマンドの前には 2 つの感嘆符 (!!) を置く必要があります。2 つの感嘆符が付いたコマンドの場合は、感嘆符の後のステートメントが cmd.exe コマンド プロセッサによって実行されます。!! の後のテキストは、cmd.exe にパラメータとして渡されるので、最終的に実行されるコマンド ラインは、"%SystemRoot%\system32\cmd.exe /c <text after !!>" になります。
  • SQLCMD コマンドと Transact-SQL の区別を明確にするために、すべての SQLCMD コマンドの先頭にはコロン (:) を付ける必要があります。
  • GO コマンドは、先頭に文字を付けずに使用することも、!!: を付けて使用することもできます。
  • クエリ エディタは、環境変数をサポートしており、また SQLCMD スクリプトの一部として定義されている変数もサポートしています。ただし、組み込みの SQLCMD 変数や osql 変数はサポートしていません。
ms174187.Caution(ja-jp,SQL.90).gif注意 :
SQL Server Management Studio は、標準モードと SQLCMD モードの実行に Microsoft .NET SqlClient を使用します。コマンド ラインから SQLCMD を実行する場合は、OLE DB プロバイダを使用することになります。同じクエリでも、SQL Server Management Studio の SQLCMD モードで実行する場合と SQLCMD ユーティリティで実行する場合とでは、適用される既定のオプションが異なるので、動作も異なる可能性があります。

サポートされている SQLCMD 構文

クエリ エディタでは、以下の SQLCMD スクリプト キーワードをサポートしています。

[!!:]GO[count]

!! <command>

:exit(statement)

:Quit

:r <filename>

:setvar <var> <value>

:connect server[\instance] [-l login_timeout] [-U user [-P password]]

:on error [ignore|exit]

:error <filename>|stderr|stdout

:out <filename>|stderr|stdout

ms174187.note(ja-jp,SQL.90).gifメモ :
:error:out の場合、stderrstdout のどちらを指定しても、出力は [メッセージ] タブに送信されます。

クエリ エディタでは、上記以外の SQLCMD コマンドをサポートしていません。サポートされていない SQLCMD キーワードが実行されると、サポートされていないキーワードごとに、"コマンド <ignored command> を無視" メッセージがクエリ エディタから宛先に送信されます。スクリプトは正常に実行されますが、サポートされていないコマンドは無視されます。

ms174187.Caution(ja-jp,SQL.90).gif注意 :
コマンド ラインから SQLCMD を実行する場合とは異なり、クエリ エディタの SQLCMD モードにはいくつかの制限事項があります。まず、変数などのコマンド ライン パラメータを受け渡すことができません。また、クエリ エディタはオペレーティング システムのプロンプトに応答できないため、対話型のステートメントを実行しないように注意してください。

SQLCMD スクリプトのコードの色分け

SQLCMD スクリプト操作が有効になっていると、スクリプトのコードが色分けされます。Transact-SQL キーワードの色分けは変わりません。SQLCMD コマンドは、背景が影付きになります。

次の例では、現在のディレクトリを出力するために、sqlcmd ステートメントを使用して、testoutput.txt という出力ファイルを作成し、1 つのオペレーティング システム コマンドで 2 つの Transact-SQL SELECT ステートメントを実行しています。結果ファイルには、DIR ステートメントからのメッセージ出力に続いて、Transact-SQL ステートメントからの結果の出力が含まれます。

:out C:\testoutput.txt
SELECT @@VERSION As 'Server Version'
!!DIR
!!:GO
SELECT @@SERVERNAME AS 'Server Name'
GO

参照

その他の技術情報

sqlcmd ユーティリティ
SQL Server Management Studio のチュートリアル

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 7 月 17 日

新しい内容 :
  • クエリ エディタ ウィンドウを SQLCMD モードに切り替える手順を追加しました。

2005 年 12 月 5 日

変更した内容 :
  • GO に関する構文を修正しました。
  • 例を追加しました。
  • SQLCMD モードに関するトピックの内容をまとめました。