次の方法で共有


ascmd コマンド ライン ユーティリティ サンプルの Readme

更新 : 2006 年 12 月 12 日

データベース管理者は、ascmd コマンド ライン ユーティリティを使用して、Microsoft SQL Server 2005 Analysis Services (SSAS) のインスタンスに対して XMLA スクリプト、MDX クエリ、または DMX ステートメントを実行できます。このコマンド ライン ユーティリティは Analysis Services 向けの機能を備えています。この機能は、SQL Server 2005 に付属する sqlcmd ユーティリティと類似しています。詳細については、SQL Server 2005 の「sqlcmd ユーティリティ」を参照してください。スクリプト、クエリ、またはステートメントの実行結果は、関連する SQL Server Profiler トレース情報と共にファイルに格納できます。ascmd コマンド ライン ユーティリティの既定のインストール場所は次のとおりです。

<system_drive>\Program Files\Microsoft SQL Server\90\Samples\Analysis Services\Administrator\ascmd

シナリオ

次のシナリオは、ascmd コマンド ライン ユーティリティの使用例を示しています。

サード パーティのツールからのパーティション処理

データベース管理者は、夜間の抽出、変換、読み込み (ETL) プロセスの一部として、パーティションおよびディメンションを処理する必要があります。ETL ツールが SQL Server ツールではないため、データベース管理者は、SQL Server エージェントの XMLA スクリプトに対する組み込みサポートを使用できず、SQL Server 2005 Integration Services (SSIS) パッケージを実行できません。データベース管理者は、サード パーティのツールを活用できるような、自動化されたソリューションを必要としています。XMLA スクリプトを実行するコマンド ライン ユーティリティによって、このソリューションが実現されます。このユーティリティはサード パーティ ツールから呼び出されます。データベース管理者は、ascmd コマンド ライン ユーティリティのサンプルをダウンロードして、コンパイルします。コンパイル後、ascmd コマンドライン ユーティリティを使用して、パーティションおよびディメンションを処理する XMLA スクリプトを実行できます。

サード パーティのツールからの OLAP データベースのバックアップ

同じ社内にいる別のデータベース管理者は、Analysis Services データベースのバックアップを自動化する必要があります。この場合も、会社で使用しているスケジューリング ソフトウェアは SQL Server ツールでないため、タスクはコマンド ラインから実行する必要があります。データベース管理者は (SQL Server Management Studio を使用して) 適切な XMLA スクリプトを生成します。その後、サード パーティのスケジューリング ソフトウェアは ascmd コマンド ライン ユーティリティを使用して XMLA スクリプトを実行し、OLAP データベースをバックアップします。

インストール時の XMLA の使用

ある独立系ソフトウェア ベンダの開発者は、自社製品のインストール時に直接、XMLA スクリプトを実行できるようにする必要があります。必要な処理は、XMLA スクリプトを実行して状態を取得し (イベントをトレースして)、Analysis Services データベースが正しく作成されたかどうか確認することです。ascmd コマンド ライン ユーティリティを使用すれば、この作業を実行できます。

言語

  • C#。ascmd 自体の記述に使用されている言語です。
  • バッチ ファイル コマンド。ascmd コマンド ライン ユーティリティを起動します。

前提条件

ascmd コマンド ライン ユーティリティを有効に使用するためには、次のソフトウェアの一部またはすべてをインストールする必要があります。

  • Microsoft SQL Server 2005 Analysis Services (SSAS)
    ascmd コマンド ライン ユーティリティは、 Analysis Services のインスタンスに接続して、MDX クエリ、XMLA スクリプト、および DMX ステートメントを実行するために使用するので、Analysis Services のインスタンスがインストールされており、実行中であることが必要です。
  • SQL Server Management Studio および Business Intelligence Development Studio
    これら 2 つの作業環境によって、Analysis Services に関連するタスクの実行に必要なインフラストラクチャが提供されます。どのタスクも、ユーザー インターフェイス経由またはプログラムによって実装を処理できます。
  • 分析管理オブジェクト (AMO)
    Analysis Services がインストールされていないコンピュータで ascmd コマンド ライン ユーティリティを実行する場合には、AMO が必要です。AMO は SQL Server 2005 Feature Pack からインストールできます。この Feature Pack は、Microsoft ダウンロード センター (https://www.microsoft.com/downloads) からダウンロードできます。
  • Microsoft Visual Studio 2005 または .NET Framework SDK 2.0
    ascmd サンプル アプリケーションをビルドまたはカスタマイズする場合は、Visual Studio 2005 を使用することをお勧めします。Visual Studio 2005 がない場合は、.NET Framework SDK 2.0 を使用してください。.NET Framework SDK には、MSBuild.exe が含まれています (この後の「サンプルのコンパイル」を参照してください)。

引数

ascmd のコマンド ラインでは次の引数がサポートされています。

  • –Ulogin_id
    ユーザーのログイン ID。大文字と小文字は区別されません。

    ms365187.note(ja-jp,SQL.90).gifメモ :
    login_id の用途は、sqlcmdascmd で異なります。login_id は、sqlcmd では SQL Server ログイン、ascmd では Windows ログインを表します。

    TCP/IP によるアクセスの場合、Analysis Services は信頼関係接続のみをサポートします。–U パラメータが (–P パラメータを使用して、対応するパスワードと共に) 指定されている場合、ascmd コマンド ライン ユーティリティは、指定されたアカウントで Windows オペレーティング システムにログオンし、XMLA スクリプト、MDX クエリ、または DMX ステートメントの実行時にはそのアカウントの権限を借用します。ログイン ID は、<domain>\<username> の形式で指定し、ドメインを指定する必要があります。–U が指定されていない場合、認証は ascmd コマンド ライン ユーティリティを実行しているユーザーの Windows アカウントに基づいて行われます。

    –S パラメータで http (または https) 接続が指定されている場合、ascmd コマンド ライン ユーティリティは、Windows オペレーティング システムにログオンしません。代わりに、インターネット インフォメーション サービス (IIS) サーバーへの接続文字列の一部として、–U および –P パラメータ (指定している場合) が含められます。IIS の構成によっては、さらに –U および –P パラメータを基本認証に使用できます。"UID" 接続パラメータの詳細については、SQL Server 2005 Books Online の「AdomdConnection クラス」を参照してください。

  • –Ppassword
    –U パラメータに対応するユーザー指定のパスワード。–U パラメータが指定され、–P パラメータが指定されていない場合、パスワードは空白 (空、長さが 0 の文字列) と見なされます。–P パラメータが指定され、–U パラメータが指定されていない場合、–P パラメータは無視されます。

    ms365187.security(ja-jp,SQL.90).gifセキュリティ メモ :
    空白のパスワードは使用しないでください。また複雑なパスワードを使用してください。詳細については、SQL Server 2005 Books Online の「強力なパスワード」を参照してください。 –P パラメータのパスワードは、スクリプト、クエリ、またはステートメント ファイルでクリア テキストとして格納されるので、コンピュータ モニタを見ることのできるユーザーやこれらのファイルを読み取ることのできるユーザーであれば、見ることが可能です。この機能を使用する場合、ファイルに ACL を設定するか、それ以外のセキュリティ テクニックを使用して、信頼されたユーザーしかこれらのファイルを参照できないようにします。
  • –Sserver\instance または –Shttp[s]://server[:port]/virtualdirectory/msmdpump.dll
    ascmd コマンド ライン ユーティリティが接続して実行する Analysis Services インスタンスを指定します。–P パラメータが指定されていない場合、ascmd コマンド ライン ユーティリティは、(localhost に接続して) TCP を実行しているローカル コンピュータ上の Analysis Services の既定インスタンスに接続し、XMLA スクリプト、MDX クエリ、または DMX ステートメントを実行します。
  • –ddatabase
    MDX クエリまたは DMX ステートメントの実行対象であるデータベースを指定します。XMLA スクリプトにはデータベース名が埋め込まれているため、ascmd コマンド ライン ユーティリティで XMLA スクリプトを実行する場合、–d パラメータは無視されます。
  • –tquery-timeout
    XMLA スクリプト、MDX クエリ、DMX ステートメントの実行がタイムアウトするまでの秒数を指定します。ascmd コマンド ライン ユーティリティによって、TIMEOUT =<query-timeout> 句が接続文字列に追加されます。
  • –tcconnect-timeout
    Analysis Services インスタンスへの ascmd 接続がタイムアウトするまでの秒数を指定します。ascmd コマンド ライン ユーティリティによって、CONNECT TIMEOUT = <connect-timeout> 句が接続文字列に追加されます。
  • –iinput-file
    XMLA スクリプト、MDX クエリ、または DMX ステートメントが記述されているファイルを指定します。ascmd コマンド ライン ユーティリティを使用する場合は、–i または –Q パラメータに値を指定する必要があります。–i または –Q パラメータを指定しなかった場合、あるいはこれらのパラメータの両方を指定した場合、エラーが生成されます。

    ms365187.note(ja-jp,SQL.90).gifメモ :
    複数の入力ファイルを処理できる sqlcmd コマンド ライン ユーティリティとは異なり、ascmd コマンド ライン ユーティリティで一度に処理できるのは、1 つの入力ファイルのみです。入力ファイルが複数ある場合は、それぞれの入力ファイルを呼び出し、個別に実行する必要があります。

    –i または –Q パラメータで指定する入力ファイルは、有効な XML 構造でなければなりません。また、特殊文字は HTML でエンコードされていなければなりません。たとえば、テキスト内でアンパサンド (&) を使う場合、&amp; にエンコードする必要があります。したがって、[Product].&[1922] は、[Product].&amp;[1922] にエンコードされます。同様に、小なり記号 (<) は &lt;、大なり記号 (>) は &gt;、二重引用符 (") は &quot; にエンコードされます。メンバ キーの構文ではアンパサンド文字 (&) を使用するので、このことは MDX クエリおよび DMX ステートメントで重要になります。

    ms365187.note(ja-jp,SQL.90).gifメモ :
    入力テキストが XMLA スクリプトの規則に従っていないとき、つまり、<Statement> や <Create> などの正しい XMLA コマンドから始まっていないとき (コマンドの完全な一覧はこのドキュメントの後半にあります)、ascmd コマンド ライン ユーティリティはテキストが <Statement> であると見なし、HTML によってテキストがエンコードされ、テキストの前後が <Statement> と </Statement> の XML 要素タグで囲まれます。これは MDX クエリおよび DMX ステートメントの実行を容易にするための処置です。<Statement> 要素を使用して HTML テキストをユーザー自身が記述することもできます。有効な XMLA コマンドが ascmd コマンド ライン ユーティリティで受け付けられます。

    入力ファイルには、複数のバッチを GO コマンドで区切って指定できます。入力ファイル内の各バッチには、XMLA スクリプト、MDX クエリ、または DMX ステートメントを含めることができます。各 GO コマンドは 1 行で指定してください。GO コマンドが見つかると、GO コマンドの前にある入力がサーバーに送られます。入力ストリームの最後には、暗黙の GO コマンドが想定されます。生成される出力ファイルでは、返された XML ストリームが <multiple-batches> 要素で囲まれた形式になります。複数のバッチを含む入力ファイルの例については、シナリオ 11 を参照してください。

    それぞれのバッチは単独で実行され、成功または失敗となります。各バッチの戻りステータスは出力ファイルに記録されるので、出力ファイルを解析して各バッチの成功または失敗を判断してください。

  • –ooutput-file | NUL | NUL:filename
    XMLA スクリプトの結果、または MDX クエリや DMX ステートメントから返されるセルセットを受け取るファイル (XML 形式) を指定します。指定されたファイルが既に存在する場合、既存のファイルは自動的に上書きされます。空白を含んでいるファイル名は、引用符 ("") で囲む必要があります。ファイル名が無効な場合は、エラー メッセージが生成され、ascmd コマンド ライン ユーティリティが終了します。

    ascmd コマンド ライン ユーティリティでは同じファイルに複数の ascmd プロセスを同時に書き込むことができません。同時書き込みが試行されると、出力ファイルが破損したり、不適切なファイルになる場合があります。

    指定された出力ファイルが NUL または NUL:filename の場合、–T パラメータでトレース ファイルを指定しない限り、実行結果は無視されます。トレース ファイルが指定された場合、実行結果はトレース ファイルに格納されます。–Tl パラメータで Duration トレース レベルを指定する場合、–T パラメータで NUL 出力ファイルを指定しておくと便利です。

    たとえば、一連の MDX クエリを作成してそれを ascmd コマンド ライン ユーティリティで実行する場合、出力は非常に大きくなることがあるので無視し、クエリの実行時間をトレース ファイルに記録して、クエリの実行時間値をトレース ファイルからデータベースに読み込むことができます。これにより、長期間にわたるパフォーマンスの変化を評価できます。または、–Tl パラメータに Duration-result トレース レベルを指定して、トレース ファイルに実行時間と実行結果の両方を含めることができます。

    ms365187.note(ja-jp,SQL.90).gifメモ :
    ascmd コマンド ライン ユーティリティでは、国際エンコードがサポートされています。入力ファイルと出力ファイルには、バイト順マークを有効にした UTF-8 エンコードが使用されます。使用しているテキスト エディタで UTF-8 がサポートされておらず、MDX クエリ、XMLA スクリプト、または DMX ステートメントに国際文字が含まれている場合は、メモ帳を使用して、入力ファイルを UTF-8 形式に変換します。入力ファイルを UTF-8 に変換するには、ファイルをメモ帳で開き、[ファイル] メニューの [名前を付けて保存] をクリックし、[エンコード] ボックスの一覧の [UTF-8] を選択します。これで、–i パラメータと共にファイルを使用できます。出力ファイルとトレース ファイル (–o および –T) は、常に UTF-8 エンコードとバイト順マーカーを使用して書き込まれるため、Unicode 文字が維持されます。
  • –Ttrace-file
    XMLA スクリプト、MDX クエリ、または DMX ステートメントを実行している ascmd コマンド ライン ユーティリティから Analysis Services トレース イベントを受け取るファイルを指定します。ファイルが既に存在する場合は、自動的にそのファイルが上書きされます (–TlDuration および –TlDuration-result パラメータ設定を使用して作成されるトレース ファイルは例外です)。空白を含んでいるファイル名は、引用符 ("") で囲む必要があります。ファイル名が無効な場合は、エラー メッセージが生成され、ascmd コマンド ライン ユーティリティが終了します。

    ascmd コマンド ライン ユーティリティでは同じファイルに複数の ascmd プロセスを同時に書き込むことができません。同時書き込みが試行されると、出力ファイルが破損したり、不適切なファイルになる場合があります。–T パラメータが指定されていない場合、トレース出力はキャプチャされず、–Tf–TlTd および –Tt パラメータは無視されます。

    ms365187.note(ja-jp,SQL.90).gifメモ :
    http または https アクセスを使用している場合は、–T パラメータを使用できません。この場合は、–S パラメータを指定して、通常のクライアント/サーバー接続を使用する必要があります。
  • –xcextended-connect-string
    値のチェックなしで接続文字列に直接挿入する、拡張接続文字列を指定します。文字列の先頭または末尾にセミコロン (;) を含むことはできません。たとえば、次の拡張接続文字列は、サーバーと ascmd プロセス間で使用されるネットワーク パケット サイズを 4096 から 16384 に変更し、さらにクライアントのロケールを en-US (英語 (US)) に設定することを要求しています。

    -xc "Packet Size=16384;LocaleIdentifier=1033"

    ascmd コマンド ライン ユーティリティの既定値では、拡張接続文字列情報は追加されません。ascmd コマンド ライン ユーティリティのオプションの多くは、拡張接続文字列設定 (たとえば、Database=<database name> を直接設定するなど) として実装できますが、他に使用できるメカニズムがなく、拡張接続文字列設定だけを使用できる場合は、標準の ascmd オプションを使用することをお勧めします。

  • –Tftext | csv
    –T パラメータ (このパラメータを指定している場合) のファイル形式を指定します。既定値は csv です。次のオプションを使用できます。

    • text の場合、ファイルはテキスト形式で書き込まれます。形式の例を以下に示します。
      <現在の時刻> <イベント クラス>.<イベント サブクラス>, [名前=値]
    • csv の場合、ファイルはコンマ区切りの形式で書き込まれます。既定の列区切り記号は、| (パイプ、つまり縦棒) です。csv ファイルの既定の区切り記号を変更するには、–Td パラメータを使用します。ファイル内の最初の行では、値の列見出しを指定します。
  • –Tddelim-char
    –Tf パラメータを使用するトレース ファイルの形式として csv を指定している場合は、トレース ファイルの区切り記号として 1 文字を指定します。既定値は | (パイプ、つまり縦棒) です。
  • –Tttrace-timeout
    トレースを終了するまで Analysis Services エンジンが待機する秒数を指定します (–T パラメータを指定している場合)。指定された秒数の間、トレース メッセージが記録されなかった場合、トレースが終了したと見なされます。トレース タイムアウトの既定値は 5 秒です。
  • –Tltrace-level
    トレース ファイルにどのようなデータを集めて記録するかを指定します。このパラメータには、次の 5 つの値を指定できます。

    • High – すべてのトレース イベントを記録します。これが既定の設定です。
    • Medium – ProgressReportCurrent イベントと Notification イベント以外のすべてのトレース イベントを記録します。
    • Low – イベントに "End" または "Error" を含むトレース イベントのみを記録します。
    • Duration – トレース イベントは記録せず、ascmd プロセスによるスクリプト、クエリ、またはステートメントの実行時間を決定します。現在時刻、実行時間、実行テキスト、データベース、およびサーバー名を含む単一のエントリをトレース ファイルに書き込みます。
    • Duration-result – Duration の設定と同じ情報を記録し、トレース ファイルの最後の列に実行結果も記録します。
    ms365187.note(ja-jp,SQL.90).gifメモ :
    Duration および Duration-result の設定で生成されるトレース ファイルは、High, Medium および Low の設定で生成されるトレース ファイルとは異なり、実行ごとに上書きされません。代わりに、Duration および Duration-result の設定では、既存のトレース ファイルが存在する場合、このファイルが開かれ新しい値がファイルの最後に追加されます。トレース ファイルが存在しない場合は作成されます。
  • –Q*"cmdline query or script"*
    ファイル内にではなくコマンド ラインから直接、実際のスクリプト、クエリ、またはステートメントを指定します。

    ms365187.note(ja-jp,SQL.90).gifメモ :
    sqlcmd コマンド ライン ユーティリティの場合は、–q パラメータを使用して入力クエリを指定する方法もあります。ただし、このオプションでは sysinput から読み込みが行われるため、言語構造を追加しない限りは記述できません。たとえば、sqlcmd では、"go" および "exit" を使用して sysinput コマンドを制御します。この方法は、ascmd コマンド ライン ユーティリティではサポートされていません。
  • –v var=value...
    追加のスクリプト変数を指定します。各変数は、var = value のペアです。スペースや制御文字が値に含まれている場合は、二重引用符 (") で囲む必要があります。次に例を示します。

    -v maxparallel=4 option= "degree of freedom"

    0 個、1 個、または 2 個以上の var = value のペアを指定できます。

  • –? または /?
    ascmd コマンド ライン ユーティリティ オプションの構文の概要を表示します。

キーの暗号化とサンプルのコンパイル

強力な名前のキー ファイルをまだ作成していない場合は、次の指示に従ってキー ファイルを生成してください。

厳密な名前のキー ファイルを生成するには

  1. Microsoft Visual Studio 2005 コマンド プロンプトを開きます。[スタート] メニューの [すべてのプログラム] をポイントし、[Microsoft .NET Framework SDK 2.0] をポイントします。次に、[SDK コマンド プロンプト] をクリックします。

    -- または --

    Microsoft .NET Framework コマンド プロンプトを開きます。[スタート] メニューの [すべてのプログラム] をポイントし、[Microsoft .NET Framework SDK 2.0] をポイントします。次に、[SDK コマンド プロンプト] をクリックします。

  2. ディレクトリの移動コマンド (CD) を使用して、コマンド プロンプト ウィンドウの現在のディレクトリから、サンプルがインストールされているフォルダに移動します。

    ms365187.note(ja-jp,SQL.90).gif注 :
    サンプルが配置されているフォルダを調べるには、[スタート] ボタンをクリックし、[すべてのプログラム]、[Microsoft SQL Server]、[マニュアルとチュートリアル] の順にポイントして、[サンプル ディレクトリ] をクリックします。既定のインストール場所を使用している場合、サンプルは <system_drive>:\Program Files\Microsoft SQL Server\100\Samples にあります。
  3. コマンド プロンプトで、次のコマンドを実行してキー ファイルを生成します。

    sn -k SampleKey.snk

    ms365187.note(ja-jp,SQL.90).gif重要 :
    厳密な名前のキー ペアの詳細については、MSDN の .NET Development Center にある「Security Briefs: Strong Names and Security in the .NET Framework」を参照してください。

サンプルをコンパイルするには、次の 2 つの方法のいずれかを使用します。

  • Visual Studio 2005 を使用する。<install_path>\Samples\Analysis Services\Administrator\ascmd\cs フォルダで提供されている Visual Studio ソリューションを使用してサンプルをコンパイルします。

  • MSBuild を使用する。これは .NET Framework SDK 2.0 に含まれています。コマンド プロンプトで次のコマンドを実行してサンプルをコンパイルします。

    cd Analysis Services\Administrator\ascmd\CS\ascmd
    msbuild ascmd.csproj /nologo /v:quiet /p:Configuration=Debug;Platform=<platform>
    
ms365187.note(ja-jp,SQL.90).gifメモ :
Microsoft Visual Studio は x86 および x64 ベースのコンピュータでは完全にサポートされていますが、Itanium ベースのコンピュータではサポートされていません。ascmd コマンド ライン ユーティリティをコンパイルすれば、ascmd コマンド ライン ユーティリティは x86、x64、Itanium のいずれをベースにしているコンピュータでも実行できます。

上記のコードの <platform> のパラメータ値は、32 ビット コンピュータでは x86、x64 ベースのコンピュータでは x64、IA64 ベースのコンピュータでは Itanium に設定できます。64 ビットのコンピュータで 32 ビットのコードを実行すると、パフォーマンスが低下する場合があるため、ascmd コマンド ライン ユーティリティの適切なバージョンを指定してコンパイルすることをお勧めします。

ms365187.note(ja-jp,SQL.90).gifメモ :
対象のコンピュータとは異なるアーキテクチャのコンピュータで ascmd コマンド ライン ユーティリティをコンパイルした場合 (32 ビット コンピュータで ascmd コマンド ライン ユーティリティをコンパイルしているにもかかわらず、 x64 または Itanium のパラメータ値を使用している場合など) は、3 種類のシステム DLL が使用できないことを示す 3 つの警告メッセージ ("... は異なるプロセッサを対象にしています。") が表示されます。これは、想定されている正常な動作です。ascmd コマンド ライン ユーティリティをコンパイルした後は、コンパイルした実行可能ファイルを対象サーバーにコピーすれば、適切な DLL がある対象サーバーから実行できます。

スクリプト変数および環境変数の使用

ascmd コマンド ライン ユーティリティでは、システム予約のスクリプト変数とユーザー定義のスクリプト変数がサポートされます。これらの変数は XMLA スクリプト、MDX クエリ、および DMS ステートメントで使用できます。これらの変数の値は、環境変数の値を指定するか、コマンド ライン パラメータの値を指定して設定できます。

ユーザー定義のスクリプト変数と環境変数には、次のルールが適用されます。

  • 変数には、任意の数の小文字、大文字、数字、ダッシュ (-)、アンダースコア (_) を含めることができます。
  • 変数には、埋め込み文字または制御文字 (CR、LF、TAB など) を含めることはできません。

システム予約のスクリプト変数

システム予約のスクリプト変数は、ascmd コマンド ライン ユーティリティで定義され、各コマンド ライン パラメータに関連付けられている値を格納するスクリプト変数です。場合によっては、これらのシステム予約のスクリプト変数の値は、環境変数を使用して格納することもできます。システム予約のスクリプト変数のうち、環境変数とコマンド ライン パラメータの両方から設定または抽出できる変数については、コマンド ライン パラメータを指定した場合はそのパラメータ値によって、指定されている環境変数値がすべて上書きされます。

次の表では、システム予約のスクリプト変数、関連するコマンドライン パラメータ、および関連する環境変数 (適用される場合) について説明します。

ms365187.note(ja-jp,SQL.90).gifメモ :
コマンド ライン パラメータでしか設定できないシステム予約のスクリプト変数は 3 つあります (–i–o、および –T パラメータを使用)。これらのコマンド ライン パラメータに対応するシステム予約のスクリプト変数の設定に使用できる ASCMD 環境変数はありません。
システム予約のスクリプト変数 パラメータ 環境変数 (あれば)

ASCMDUSER

–U

ASCMDUSER

ASCMDDOMAIN

–U

ASCMDUSER

ASCMDPASSWORD

–P

ASCMDPASSWORD

ASCMDSERVER

–S

ASCMDSERVER

ASCMDINSTANCE

–S

ASCMDSERVER

ASCMDHTTPCONNECTION

–S

ASCMDSERVER

ASCMDDBNAME

d

ASCMDDBNAME

ASCMDINPUTFILE

–i

ASCMDOUTPUTFILE

–o

ASCMDQUERYTIMEOUT

–t

ASCMDQUERYTIMEOUT

ASCMDCONNECTTIMEOUT

–tc

ASCMDCONNECTTIMEOUT

ASCMDTRACEFILE

–T

ASCMDTRACEFORMAT

–Tf

ASCMDTRACEFORMAT

ASCMETRACEDELIM

–Td

ASCMDTRACEDELIM

ASCMDTRACELEVEL

–Tl

ASCMDTRACELEVEL

ASCMDTRACETIMEOUT

–Tt

ASCMDTRACETIMEOUT

ASCMDEXTENDEDCONNECTION

–xc

ASCMDEXTENDEDCONNECTSTRING

上記の表では、1 つのパラメータまたは環境変数から複数のシステム予約のスクリプト変数が派生している箇所があります。次の例では、ASCMDSERVER 環境変数の設定から、3 つのシステム予約のスクリプト変数が派生しています。

  • C:\>SET ASCMDSERVER=http://myserver/my_virtual_dir/msmdpump.dll

ASCMDSERVER 環境変数の値を指定する上記の SET ステートメントにより、次の 3 つのシステム予約のスクリプト変数の値が設定されます。

  • ASCMDSERVER="http://myserver/my_virtual_dir/msmdpump.dll"
  • ASCMDINSTANCE=""
  • ASCMDHTTPCONNECTION="true"

次の例では、上の 3 つのシステム予約のスクリプト変数に対して、別の形式で SET ステートメントを使用し、異なる値を設定します。

  • C:\>SET ASCMDSERVER=myserver\myinstance

ASCMDSERVER 環境変数の値を指定する上記の SET ステートメントにより、次の 3 つのシステム予約のスクリプト変数の値が設定されます。

  • ASCMDSERVER="myserver"
  • ASCMDINSTANCE="myinstance"
  • ASCMDHTTPCONNECTION="false"

コマンド プロンプトでのシステム予約のスクリプト変数の使用

システム予約のスクリプト変数と一致する (大文字と小文字は区別されない) 環境変数が存在する場合、その環境変数の値は、システム予約のスクリプト変数、および関連するコマンド ライン パラメータの既定値として使用されます。たとえば、次の SET ステートメントを使用して、ASCMDDBNAME 環境変数を設定したとします。

  • C:\>SET ASCMDDBNAME="Adventure Works DW"

この場合、ascmd コマンド ライン ユーティリティを実行すると、コマンド ラインで別の値を指定していない限り、"Adventure Works DW" が既定のデータベースとして使用されます (–d パラメータ)。

スクリプト、クエリ、またはステートメントでのシステム予約のスクリプト変数の使用

システム定義のスクリプト変数は、XMLA スクリプト、MDX クエリ、または DMX ステートメントでも使用できます。次の例では、スクリプト変数を使用したコマンド ラインからの ascmd コマンド ライン ユーティリティの呼び出しを示しています。コマンドの使用に関するシナリオを示した例は、このドキュメントの後半に記載されています。

  • C:\>ascmd -S <server name> -i process.xmla -v cube=<CubeID>
process.xmla (簡潔に示したもの)
<Batch>
    <Parallel>
         <Process>
             <Object>
                  <DatabaseID>$(ASCMDDBNAME)</DatabaseID>
                  <CubeID>($CUBE)</CubeID>
            . . .
         </Process>
    </Parallel>
</Batch>

ユーザー定義のスクリプト変数

ユーザー定義のスクリプト変数は、コマンド ラインで –v パラメータを使用して定義される、または環境変数として定義されるスクリプト変数です。ascmd コマンド ライン ユーティリティは、XMLA スクリプト、MDX クエリ、または DMX ステートメント内で変数を検出すると、その変数の値が -v パラメータで設定されていない場合、同じ名前の環境変数がないかどうかを調べ、その変数の値を使用します。対応する環境変数を ascmd コマンド ライン ユーティリティで検出できない場合、スクリプト変数は空白の文字列 ("") で置き換えられて、削除されます。

コマンド ラインで –v パラメータを使用して定義されるユーザー定義のスクリプト変数には、次のルールが適用されます。

  • 変数の "値" 部分から、先頭および末尾にあるスペースが削除されます。
  • 変数は、文字列 "ascmd" で始めることはできません。

入力ファイル内での MDX、XMLA、および DMX の使用

ascmd コマンド ライン ユーティリティは、入力ファイル内での MDX クエリ、XMLA スクリプト、および DMX ステートメントの実行をサポートします。ascmd コマンド ライン ユーティリティに渡す入力スクリプトは、実際には XMLA コマンド要素です。

コマンド要素は次のとおりです。

  • Alter
  • Backup
  • Batch
  • BeginTransaction
  • Cancel
  • ClearCache
  • CommitTransaction
  • Create
  • Delete
  • DesignAggregations
  • Drop
  • Insert
  • Lock
  • MergePartitions
  • NotifyTableChange
  • Process
  • Restore
  • RollbackTransaction
  • Statement (MDX クエリと DMX ステートメントの実行に使用)
  • Subscribe
  • Synchronize
  • Unlock
  • Update
  • UpdateCells

一度に複数のオブジェクトに対してコマンドを実行するには、<Batch> コマンドを使用します。MDX クエリおよび DMX ステートメントに対して実行するには、<Statement> コマンドを使用します。詳細については、SQL Server 2005 Books Online の「Command 要素 (XMLA)」を参照してください。次の例は、MDX クエリ、DMX ステートメント、および XMLA スクリプトを構成する方法を示しています。

ms365187.note(ja-jp,SQL.90).gif重要 :
あらゆる XML 構造と同様、コマンドの大文字と小文字は区別されます。したがって、たとえば MDX クエリはすべて <Statement> .... </Statement> タグで囲み、このときのコマンドは "Statement" と指定する必要があります。"statement" または "STATEMENT" と指定することはできません。

XMLA コマンドだけでなく、ascmd コマンド ライン ユーティリティも、カスタム XMLA 要求を実行する場合に使用できます。これにより、XMLA で表現できる事実上すべての要求を実行することができます。たとえば、ascmd コマンド ライン ユーティリティは次のいずれかの XMLA 要求を発行するために使用できます。

  • Analysis Services メタデータのクエリを行う XMLA 検出要求。このメタデータには、次の項目に関する情報が含まれています。
    • Analysis Services データベースに格納されているオブジェクト (サーバーで定義されているキューブなど)
    • 使用中のリソース (サーバー上で開かれている接続など)
  • コマンドを実行する実行要求。ただし、プロパティ リストおよびパラメータ リストを指定してコマンドを変更できます。この要求の例は、ドキュメントの後半に示します。「実行の例」を参照してください。

入力テキストが XMLA コマンド形式、検出要求、実行要求のいずれでもない場合、ascmd コマンド ライン ユーティリティは入力テキストを MDX クエリか DMX ステートメントと見なします。この場合、ascmd コマンド ライン ユーティリティの HTML がテキストをエンコードして、<Statement> ... </Statement> 要素で囲み、XMLA コマンドとして処理します。これで MDX クエリや DMX ステートメントの入力が容易になります。この機能の使い方については、ドキュメントの後半に示した、シナリオ 1 「Analysis Services キューブのクエリ」を参照してください。

MDX の例 :

<Statement>
SELECT NON EMPTY
         [Employees].Members ON ROWS,
         [Measures].[Internet Gross Profit] ON COLUMNS 
FROM [Adventure Works]
</Statement>

この例では、XMLA ステートメント内で MDX クエリを使用して、Adventure Works キューブから Employees 階層属性の空ではないメンバごとに、Internet Gross Profit メジャーを返します。

DMX の例 :

<Statement>
ALTER MINING STRUCTURE [Bike Buyer]
ADD MINING MODEL [Decision Tree]
(
    [Customer Key],
    [Age],
    [Bike Buyer] PREDICT,
    [Commute Distance],
    [Education],
    [Gender],
    [House Owner Flag],
    [Marital Status],
    [Number Cars Owned],
    [Number Children At Home],
    [Occupation],
    [Region],
    [Total Children],
    [Yearly Income]
) USING Microsoft_Decision_Trees
WITH DRILLTHROUGH
</Statement>

この例では、XMLA ステートメント内で DMX クエリを使用し、新しいマイニング モデルを追加することで [Bike Buyer] マイニング構造を変えています。

XMLA の例 :

<Batch xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
   <Parallel>
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <Object>
            <DatabaseID>Adventure Works DW</DatabaseID>
            <CubeID>Adventure Works DW</CubeID>
            <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
            <PartitionID>Internet_Sales_2001</PartitionID>
         </Object>
         <Type>ProcessFull</Type>
         <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
      </Process>
   </Parallel>
</Batch>

この例では、XMLA ステートメントを使用して Internet_Sales_2001 パーティションを完全に処理します。

検出の例 :

<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
   <RequestType>MDSCHEMA_CUBES</RequestType>
   <Restrictions>
      <RestrictionList>
         <CATALOG_NAME>Adventure Works DW</CATALOG_NAME>
      </RestrictionList>
   </Restrictions>
   <Properties>
      <PropertyList>
         <Catalog>Adventure Works DW</Catalog>
         <Format>Tabular</Format>
      </PropertyList>
   </Properties>
</Discover>

この例では、XMLA の検出要求を使用して、Adventure Works DW データベースで使用可能なキューブを返します。アプリケーションにはキューブとして扱うことができる分析観点が返されます。つまり、返されるデータには、実際のキューブと分析観点の両方が含まれています。

実行の例 :

<Execute xmlns="urn:schemas-microsoft-com:xml-analysis">
   <Command>
      <Statement>
         SELECT [Measures].MEMBERS ON COLUMNS FROM [Adventure Works]
      </Statement>
   </Command>
   <Properties>
      <PropertyList>
         <Catalog>Adventure Works DW</Catalog>
         <Format>Tabular</Format>
         <AxisFormat>ClusterFormat</AxisFormat>
      </PropertyList>
   </Properties>
</Execute>

この例では、XMLA ステートメント内で MDX クエリを使用します。ただし、XMLA 要求の Property List 部分が返す形式に、多次元形式ではなく表形式を指定していることに注意してください。多次元形式が XMLA ステートメント コマンドの既定の形式です。返される形式が表形式 (行セット) であるため、セルセットではなく xsd のフラットな行セットを認識するアプリケーションで出力ファイルを使用できます。また、フラットな行セットは表形式になるので、SQL リレーショナル データベースに簡単に読み込むことができます。

ASCMD シナリオの例

次のシナリオは、ascmd コマンド ライン ユーティリティの使用方法を示しています。

シナリオ 1 : Analysis Services キューブのクエリ

このシナリオでは、ユーザー定義のスクリプト変数 (キューブ) を含む MDX クエリを記述した入力ファイル (query.mdx ファイル) を作成します。次に、ascmd コマンド ライン ユーティリティから入力ファイルを呼び出し、–v パラメータを使用してコマンド ラインでこの変数の値を指定します。

query.mdx ファイル :

形式 1 :

<Statement>
/* THIS IS AN MDX COMMENT */
SELECT [Measures].[Internet Sales Amount] ON COLUMNS
FROM $(cube)
WHERE [Customer].[Country].&amp;[United States]
</Statement>

形式 2 :

/* THIS IS AN MDX COMMENT */
SELECT [Measures].[Internet Sales Amount] ON COLUMNS
FROM $(cube)
WHERE [Customer].[Country].&[United States]
コマンド ラインの例 :

C:\>ascmd -S myserver -d "Adventure Works DW" -i query.mdx -o result.xml -v cube="[Adventure Works]"

形式 1 を使用するときは、MDX "&" (名前ではなくメンバ キーを指す) を &amp; (HTML エンコーディングに必要) に置き換え、<Statement> 要素を指定して、United States のキーが処理されることに注意してください。形式 2 を使用するときは、HTML エンコーディングも <Statement> も不要です。これは、入力テキストが有効な XMLA コマンドで始まっていないので、ascmd コマンド ライン ユーティリティは入力テキストをステートメントと見なし、実行前に入力テキストを自動的に HTML でエンコードして、<Statement> 要素で囲むためです。

シナリオ 2 : 信頼されていないドメインでのデータベースのバックアップ

このシナリオでは、ascmd コマンド ライン ユーティリティを使用して、信頼されていないドメイン内のサーバー上にあるデータベースをバックアップします。データベースは信頼されていないドメインにあるため、このシナリオには http アクセスが必要です。このシナリオでは、リモート サーバー ("myserver" という名前) で、インターネット インフォメーション サービス (IIS) および Analysis Services の両方が実行中であり、基本認証を使用するように "olapadmin" という名前の IIS 仮想ディレクトリが構成されています。また、リモート サーバーには、適切なバックアップ権限を持っている "olapadmin" という名前のローカル アカウントがあります。ascmd コマンド ライン パラメータを使用して、データベース名、アクセス方法、ユーザー名、パスワード、およびバックアップ ファイルをコマンド ラインで指定し、データベースおよびバックアップ ファイルに対応したスクリプト変数を記述した XMLA 入力ファイル (backup.xmla) を指定します。

backup.xmla ファイル :
<Backup xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
   <Object>
      <DatabaseID>$(ascmddbname)</DatabaseID>
   </Object>
   <File>$(backupfile).abf</File>
</Backup>
コマンド ラインの例 :

C:\>ascmd -S https://myserver/msolap90/msmdpump.dll -U myserver\olapadmin -P #1PWD -d "Adventure Works DW" -i backup.xmla -v backupfile="AdvWorks"

このコマンド ラインの例では、https が使用されているため、パスワードがネットワーク経由でリモート サーバーに送信されるときに暗号化されることに注意してください。

シナリオ 3 : 複数のパーティションの処理

このシナリオでは、ascmd コマンド ライン ユーティリティを使用して複数のパーティションを処理します。XMLA 処理スクリプト (process.xmla) のスクリプト変数を使用して、並列処理の程度、データベース名とキューブ名、およびプロセスの種類を指定します。この XMLA スクリプトでは、XMLA スクリプト内でのコメントの使用方法も示しています。ascmd コマンド ライン ユーティリティから process.xmla 処理スクリプトを呼び出す場合は、サーバーとデータベース名、XMLA 結果の出力ファイル、トレース イベント用のトレース ファイル、トレース レベル、およびバッチ ファイル (process.bat) 内の並列処理の程度を指定します。トレース ファイルには、処理中に管理者がシステムを監視していれば SQL Server Profiler から返されるものと同じイベントと情報が記録されます。

process.xmla ファイル :
<Batch xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
   <Parallel maxparallel="$(MAXPARALLEL)">
   <!-- SEE ABOVE FOR HOW MANY PARITIONS PROCESSED IN PARALLEL -->
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <Object>
            <DatabaseID>$(ASCMDDBNAME)</DatabaseID>
            <CubeID>$(ASCMDDBNAME)</CubeID>
            <!-- Just so happens CubeID=DatabaseID=Database name :-) -->
            <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
            <PartitionID>Internet_Sales_2001</PartitionID>
         </Object>
         <Type>$(PROCESSTYPE)</Type>
         <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
      </Process>
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <Object>
            <DatabaseID>$(ASCMDDBNAME)</DatabaseID>
            <CubeID>$(ASCMDDBNAME)</CubeID>
            <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
            <PartitionID>Internet_Sales_2002</PartitionID>
         </Object>
         <Type>$(PROCESSTYPE)</Type>
         <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
      </Process>
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <Object>
            <DatabaseID>$(ASCMDDBNAME)</DatabaseID>
            <CubeID>$(ASCMDDBNAME)</CubeID>
            <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
            <PartitionID>Internet_Sales_2004</PartitionID>
         </Object>
         <Type>$(PROCESSTYPE)</Type>
         <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
      </Process>
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <Object>
            <DatabaseID>$(ASCMDDBNAME)</DatabaseID>
            <CubeID>$(ASCMDDBNAME)</CubeID>
            <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
            <PartitionID>Internet_Sales_2003</PartitionID>
         </Object>
         <Type>$(PROCESSTYPE)</Type>
         <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
      </Process>
   </Parallel>
</Batch>
process.bat ファイル :
@echo off
call :generate-timestamp
ascmd -S myserver -d "Adventure Works DW" -i process.xmla
         -o process.xml -T process-%timestamp%.csv -Tl medium 
         -v maxparallel=4 processtype=ProcessFull
if ERRORLEVEL 1 goto errseen
goto :EOF
:errseen
echo ** Error seen in processing
goto :EOF

:generate-timestamp
set now_date=%date%
set now_time=%time%
set now_Year=%now_date:~10,4%
set now_Month=%now_date:~4,2%
set now_Day=%now_date:~7,2%
set now_Hour=%now_time:~0,2%
set now_Min=%now_time:~3,2%
if "%now_Hour:~0,1%"==" " set now_Hour=0%now_Hour:~1,1%
set timestamp=%now_year%%now_month%%now_day%_%now_hour%%now_min%
goto :EOF

このバッチ ファイルでは、同時に複数の実行を記録できるように、出力ファイルでタイムスタンプを使用しています。

シナリオ 4 : サーバーでの新しいデータベースの作成

このシナリオでは、ascmd コマンド ライン ユーティリティを使用して XMLA スクリプト ファイル (create.xmla) を呼び出し、新しいデータベースをサーバー上に作成します。データベース名は、ユーザー定義のスクリプト変数を使用して XMLA で定義され、このスクリプト変数の値は、–v パラメータを使用してコマンド ラインで定義されます。

create.xmla ファイル :

このファイルは SQL Server Management Studio で作成されたものです。独自のファイルを作成するには、データベースを右クリックして [スクリプト] メニューの [作成] をクリックします。

<Create xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
      <ObjectDefinition>
            <Database xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                  <ID>$(dbname)</ID>
                  <Name>$(dbname)</Name>
                  <Description>A Unified Dimensional Model that encompasses the Adventure Works data warehouse.</Description>
                  <Language>1033</Language>
                  <Collation>Latin1_General_CI_AS</Collation>
                  <DataSourceImpersonationInfo>
                     <ImpersonationMode>Default</ImpersonationMode>
                  </DataSourceImpersonationInfo>
                  <Dimensions>
                        <Dimension>
                              <ID>Dim Promotion</ID>
                              <Name>Promotion</Name>
                              <Annotations>
 . . .
コマンド ラインの例 :

C:\>ascmd -S myserver -i create.xmla -v dbname="My Adventure Works DW"

上の XMLA スクリプトでは、スクリプト変数を使用して、データ ソースへの接続文字列、データ ソースで使用されるサーバーとデータベース名、データ ソース ビューのフィールド名などのオブジェクトを構成することもできます。

シナリオ 5 : キャッシュ ウォーマー アプリケーションの作成

このシナリオでは、バッチ ファイル (cache_warmer.bat) を使用して ascmd コマンド ライン ユーティリティを呼び出し、Analysis Services データ キャッシュを使用するいくつかの MDX クエリを呼び出します。たとえば、SQL Server エージェントを使用してこのバッチを毎日午前 2 時または夜間のバッチ読み込み後に呼び出すことができます。このバッチ ファイルでは、サーバー名、データベース名、およびキューブ名の環境変数を設定します。環境変数として指定されているサーバー名とデータベース名は、システム予約のスクリプト変数の名前と正確に一致するため、–S および –d コマンド ライン パラメータの既定値になります。キューブ名については、ユーザー定義スクリプト変数がすべての MDX クエリで使用されます。

query1.mdx ファイル :

ファイル : query1.txt の形式の query1.mdx ~ query6.mdx

<Statement>
SELECT [Measures].[Internet Sales Amount] ON COLUMNS
FROM $(cube)
WHERE [Customer].[Country].&amp;[United States]
</Statement>

Adventure Works で [United States] を他の国 ([Australia]、[Canada]、[France]、[Germany]、または [United Kingdom]) に置き換えて追加のクエリ ファイルを作成します。

cache_warmer.bat ファイル :
set ascmdserver=myserver
set ascmddbname=Adventure Works DW
set cube=[Adventure Works]

set QUERYDIR=..\queries
set OUTPUTDIR=..\queries
echo -------------------------
set f=
for %%f in (%QUERYDIR%\*.mdx) do (
    call :query %%f
            if ERRORLEVEL 1 goto :EOF
)
echo -------------------------
echo Done.
goto :EOF

:query
echo Query: %1
echo ---------
ascmd -T %OUTPUTDIR%\querylog.txt -Tl duration 
         -Tf text -o %OUTPUTDIR%\%~n1.xml -i %1
echo Errorlevel: %ERRORLEVEL%
echo -------------------------
if ERRORLEVEL 1 goto :errseen
goto :EOF

:errseen
echo -------------------------
echo   ******
echo   ****** ERROR SEEN ******
echo   ******   Exiting    ******
goto :EOF

シナリオ 6 : 検証プロシージャの作成

このシナリオでは、ascmd コマンド ライン ユーティリティを使用して、夜間の ETL 実行の最後に、前のシナリオと同様にいくつかの MDX クエリ ファイルを呼び出します。–Tl duration パラメータを使用して、MDX スクリプト出力を nul ファイル (–oNUL) に送信すると同時に各 MDX クエリの実行時間をトレース ファイルに記録します。また、–Tl duration パラメータを使用して、実行結果をトレース ログに記録することもできます。ascmd コマンド ライン ユーティリティをこのように使用すると、各 MDX クエリに必要な時間の長さを追跡したり、一定範囲の値が返されるかどうかを確認するためにこの結果を毎日比較することができます。特定の日付の実行時間の結果が範囲から大きく外れている場合は、ETL 実行の結果を取り消す必要があることを示しています。

コマンド ラインの例 :

C:\>ascmd -i %queryfile% -o NUL -T querylog.csv -Tl duration

シナリオ 7 : データ マイニング モデルの作成とトレーニングの自動化

このシナリオでは、ascmd コマンド ライン ユーティリティを使用して、次に示す一連の DMX ステートメントを呼び出します。

  • マイニング構造を作成し、環境変数を使用してサーバーとデータベースを設定する DMX ステートメント (Bike Buyer Structure DMX)
  • クラスタリング マイニング モデルを構造に追加する DMS ステートメント (Clustering_Model.dmx)
  • デシジョン ツリー マイニング モデルを構造に追加する DMS ステートメント (DT_Model.dmx)
  • マイニング構造とマイニング モデルを処理する DMX ステートメント (Process Bike Buyer Structure.dmx)

適切なマイニング構造が存在する場合、ascmd コマンド ライン ユーティリティを使用し、複数の DMX ステートメントを呼び出して、異なるマイニング モデルを使用するマイニング構造に対してクエリを実行することができます。

マイニング構造の作成

Bike Buyer Structure.dmx ファイル :
<Statement>
CREATE MINING STRUCTURE [Bike Buyer]
(
    [Customer Key] LONG KEY,
    [Age]LONG DISCRETIZED(Automatic,10),
    [Bike Buyer] LONG DISCRETE,
    [Commute Distance] TEXT DISCRETE,
    [Education] TEXT DISCRETE,
    [Gender] TEXT DISCRETE,
    [House Owner Flag] TEXT DISCRETE,
    [Marital Status] TEXT DISCRETE,
    [Number Cars Owned]LONG DISCRETE,
    [Number Children At Home]LONG DISCRETE,
    [Occupation] TEXT DISCRETE,
    [Region] TEXT DISCRETE,
    [Total Children]LONG DISCRETE,
    [Yearly Income] DOUBLE CONTINUOUS
)
</Statement>

コマンド ラインの例 :

C:\>set ascmdserver=myserver

C:\>set ascmddbname=Adventure Works DW

C:\>ascmd -i "Bike Buyer Structure.dmx"

構造へのクラスタ マイニング モデルの追加

Clustering_Model.dmx ファイル :
<Statement>
ALTER MINING STRUCTURE [Bike Buyer]
ADD MINING MODEL [Clustering]
USING Microsoft_Clustering 
</Statement>

コマンド ラインの例 :

C:\>ascmd -i "Clustering_Model.dmx"

構造へのデシジョン ツリー マイニング モデルの追加

DT_Model.dmx ファイル
<Statement>
ALTER MINING STRUCTURE [Bike Buyer]
ADD MINING MODEL [Decision Tree]
(
    [Customer Key],
    [Age],
    [Bike Buyer] PREDICT,
    [Commute Distance],
    [Education],
    [Gender],
    [House Owner Flag],
    [Marital Status],
    [Number Cars Owned],
    [Number Children At Home],
    [Occupation],
    [Region],
    [Total Children],
    [Yearly Income]
) USING Microsoft_Decision_Trees
WITH DRILLTHROUGH
</Statement>
コマンド ラインの例 :

C:\>ascmd -i "DT_Model.dmx"

マイニング構造およびマイニング モデルの処理

Process Bike Buyer Structure.dmx ファイル :
<Statement>
INSERT INTO MINING STRUCTURE [Bike Buyer]
(
    [Customer Key],
    [Age],
    [Bike Buyer],
    [Commute Distance],
    [Education],
    [Gender],
    [House Owner Flag],
    [Marital Status],
    [Number Cars Owned],
    [Number Children At Home],
    [Occupation],
    [Region],
    [Total Children],
    [Yearly Income]
)
OPENQUERY([$(ASCMDDBNAME)],
    'SELECT CustomerKey, Age, BikeBuyer,
             CommuteDistance,EnglishEducation,
             Gender,HouseOwnerFlag,MaritalStatus,
             NumberCarsOwned,NumberChildrenAtHome, 
             EnglishOccupation,Region,TotalChildren,
             YearlyIncome 
      FROM dbo.vTargetMail')
</Statement>
コマンド ラインの例 :

C:\>ascmd -i "DT_Model.dmx"

デシジョン ツリー マイニング モデルを使用した構造の照会

SELECT_DRILLTHROUGH.dmx ファイル :
<Statement>
SELECT * 
FROM [Decision Tree].CASES
</Statement>
BATCH_PREDICTION.dmx ファイル :
<Statement>
SELECT
   TOP 10
   t.[LastName],
   t.[FirstName],
   [Decision Tree].[Bike Buyer],
   PredictProbability([Bike Buyer])
From
   [Decision Tree]
PREDICTION JOIN
 OPENQUERY([$(ASCMDDBNAME)],
      'SELECT
         [LastName],
         [FirstName],
         [MaritalStatus],
         [Gender],
         [YearlyIncome],
         [TotalChildren],
         [NumberChildrenAtHome],
         [Education],
         [Occupation],
         [HouseOwnerFlag],
         [NumberCarsOwned]
      FROM
         [dbo].[ProspectiveBuyer]
      ') AS t
ON
   [Decision Tree].[Marital Status] = t.[MaritalStatus] AND
   [Decision Tree].[Gender] = t.[Gender] AND
   [Decision Tree].[Yearly Income] = t.[YearlyIncome] AND
   [Decision Tree].[Total Children] = t.[TotalChildren] AND
   [Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND
   [Decision Tree].[Education] = t.[Education] AND
   [Decision Tree].[Occupation] = t.[Occupation] AND
   [Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND
   [Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned]
WHERE [Decision Tree].[Bike Buyer] =1
ORDER BY PredictProbability([Bike Buyer]) DESC
</Statement>
SELECT_DISCRETE.dmx ファイル :
<Statement>
SELECT DISTINCT [Bike Buyer] 
FROM [Decision Tree]
</Statement>
コマンド ラインの例 :

C:\>ascmd -i SELECT_DRILLTHROUGH.dmx

C:\>ascmd -i BATCH_PERDICTION.dmx

C:\>ascmd -i SELECT_DISCRETE.dmx

シナリオ 8 : Analysis Services データ キャッシュのクリア

このシナリオでは、ascmd コマンド ライン ユーティリティを使用して、パフォーマンス調査を実行しているときに各パフォーマンス実行の合間に Analysis Services データ キャッシュをクリアする XMLA スクリプト (ClearCache.xmla) を呼び出します。ClearCache.xmla ファイルには、データベース名およびキューブ名のスクリプト変数が含まれています。この XMLA スクリプトは、サーバーおよびインスタンス名、データベース名、入力ファイル名、出力ファイル名、キューブ名を指定するバッチ ファイル (ClearCache.bat) から呼び出されます。

ClearCache.xmla ファイル :
<Batch xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
   <ClearCache>
               <Object>
                      <DatabaseID>$(ASCMDDBNAME)</DatabaseID>
                      <CubeID>$(CUBE)</CubeID>
               </Object>
       </ClearCache>
</Batch> 
ClearCache.bat ファイル :
@echo off
ascmd -S myserver\myinstance -d "Adventure Works DW" -i ClearCache.xmla
         -o ClearCache.xml -v cube="Adventure Works DW"

if ERRORLEVEL 1 goto :errseen
goto :EOF

:errseen
echo **** Error seen ****
echo ********************
goto :EOF

シナリオ 9 : サーバーに現在接続しているユーザーの確認

このシナリオでは、ascmd コマンド ライン ユーティリティを使用して、サーバー上でアクティブな接続の一覧を取得します。アプリケーションではこの情報を使用して、特定のユーザーが接続を解除するまで処理を遅らせたり、ユーザーが現在接続している場合に (夜間バッチ実行用の接続は除く)、メールをオペレータに送信したりします。

connections.xmla ファイル :
<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
   <RequestType>DISCOVER_CONNECTIONS</RequestType>
   <Restrictions />
   <Properties>
      <PropertyList>
         <Content>Data</Content>     <!-- Only the data; no schema -->
      </PropertyList>
   </Properties>
</Discover>
コマンド ラインの例 :

C:\>ascmd -S myserver -i connections.xmla -o current_connections.xml

シナリオ 10 : パーティションは処理されたかどうか、処理されているのであれば、最後に処理されたのはいつか

このシナリオでは、ascmd コマンド ライン ユーティリティを使用してパーティションが処理されたかどうか、またいつ処理されたかを判断します。この情報は、パーティション オブジェクトのプロパティとして保存されているので簡単に取得できます。このような情報を取得する場合、DISCOVER_XML_METADATA 要求を使用できます。

connections.xmla ファイル :
<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
   <RequestType>DISCOVER_XML_METADATA</RequestType>
   <Restrictions>
      <RestrictionList>
        <DatabaseID>$(DatabaseID)</DatabaseID>
        <CubeID>$(CubeID)</CubeID>
        <MeasureGroupID>$(MeasureGroupID)</MeasureGroupID>
        <PartitionID>$(PartitionID)</PartitionID>
      <!-- Ask for just this object referenced -->
      <ObjectExpansion>ReferenceOnly</ObjectExpansion>
      </RestrictionList>
   </Restrictions>
   <Properties>
      <PropertyList>
         <Content>Data</Content>     <!-- Only the data; no schema -->
      </PropertyList>
   </Properties>
</Discover>

シナリオ 11 : GO コマンドを使用した書き戻し操作の実行

このシナリオでは、ascmd コマンドライン ユーティリティを使用して、書き戻しをデータ変更とその後のデータ コミットの 2 つに分割します。書き戻し操作には 2 つの MDX ステートメント (Update Cube ステートメントと Commit Transaction ステートメント) が必要であり、これらは同じトランザクション内で連続して発行する必要があります。したがって、書き戻しには GO コマンドを使用する必要があります。同じバッチ内でこれら 2 つのステートメントを発行することは、MDX ではサポートされていません。

このシナリオでは、書き戻しをサポートするよう Adventure Works DW データベースを修正する必要があります。既存のデータベースには、現在のところ書き戻しをサポートするキューブの例はありません。書き戻しをサポートするキューブを作成し検証するには、次の手順を実行します。

  1. "Writeback" という名前の新しいキューブを定義するには

  2. Business Intelligence Development Studio を開きます。

  3. [ファイル] メニューの [開く] をポイントし、[Analysis Services データベース] をクリックします。

  4. [データベースへの接続] ダイアログ ボックスで、[サーバー] ボックスにサーバー名を入力し、[データベース] の一覧で [Adventure Works DW] データベースを選択して、[OK] をクリックします。

  5. ソリューション エクスプローラで [キューブ] を右クリックし、[新しいキューブ] をクリックします。

  6. キューブ ウィザードの [キューブ ウィザードへようこそ] ページで [次へ] をクリックし、[データ ソースを使用してキューブを構築する] を選択して、[自動構築] チェック ボックスをオフにしてから [次へ] をクリックします。

  7. [データ ソース ビューの選択] ページの [使用できるデータ ソース ビュー] 一覧で [Adventure Works DW] を選択し、[次へ] をクリックします。

  8. [ファクト テーブルとディメンション テーブルの識別] ページで、FactSalesQuota テーブルの [ファクト] チェック ボックスをオンにし、dbo.DimTime テーブルおよび dbo.DimEmployee テーブルの [ディメンション] チェック ボックスをオンにして、[次へ] をクリックします。

  9. dbo.DimTime (ディメンション名は Date)dbo.DimEmployeeFactSalesQuota ("Sales Amount Quota" メジャーを使用)

  10. [共有ディメンションの確認] ページの [使用可能なディメンション] 一覧で、[Date] および [Employee] を選択して [>] をクリックし、これらのディメンションを [キューブ ディメンション] 一覧に追加します。[次へ] をクリックします。

  11. [メジャーの選択] ページで [Fact Sales Quota] チェック ボックスをオフにし、[Sales Amount Quota] チェック ボックスをオンにして [次へ] をクリックします。

  12. [ウィザードの完了] ページで、キューブ名を「Writeback」に変更して [完了] をクリックします。

  13. Fact Sales Quota メジャー グループの書き戻しを有効にするには

  14. キューブ デザイナで [パーティション] タブをクリックします。

  15. パーティションの一覧で [Fact Sales Quota] パーティションを右クリックし、[書き戻しの設定] をクリックします。

  16. [書き戻しの有効化 - Fact Sales Quota] ダイアログ ボックスで、既定の書き戻しテーブル名を確認して [OK] をクリックします。書き戻しテーブルが作成され、このパーティションの書き戻しが有効になります。

  17. ファクト テーブル用と書き戻しテーブル用の 2 つのパーティションが表示されることを確認します。

  18. Writeback キューブを処理するには

  19. ソリューション エクスプローラの [キューブ] ノードで [Writeback] を右クリックし、[処理] をクリックします。

  20. 変更を保存するかどうかを確認するメッセージが表示されたら、[はい] をクリックします。

  21. [キューブの処理 - Writeback] ダイアログ ボックスで [実行] をクリックします。

  22. 処理コマンドを展開すると、CREATE TABLE SQL ステートメントを使用して書き戻しリレーショナル テーブルが作成されることがわかります。

  23. 処理が完了したら、[状態] ボックスでプロセスが成功したことを確認し、[閉じる] をクリックします。

  24. もう一度 [閉じる] をクリックして、[パーティションの処理 - WriteTable_Fact Sales Quota] ダイアログ ボックスを閉じます。

  25. Business Intelligence Development Studio を閉じます。

  26. 書き戻しが動作していることを確認するには

  27. SQL Server Management Studio を開きます。

  28. サーバーに接続した後、[オブジェクト エクスプローラ][データベース] を展開し、[Adventure Works DW] を右クリックして [新しいクエリ] をポイントしてから [MDX] をクリックします。

  29. MDX クエリ ウィンドウで次の MDX クエリを実行し、Q1FY2002 と Stephen Y. Jiang の現在の販売ノルマを取得します。

    /* Employee 272 is [Stephen Y. Jiang]*/
    SELECT [Measures].[Sales Amount Quota] ON COLUMNS
    FROM [Writeback]
    WHERE ([Employee].[Employee].[Stephen Y. Jiang],[Date].[Calendar].[Calendar Quarter].[Q1 CY 2002])
    
  30. 次の MDX ステートメントを発行して、2,200 ドルを返すようにセルを修正します。

    UPDATE CUBE [Writeback]
    SET ([Employee].[Employee].[Stephen Y. Jiang],
    [Date].[Calendar].[Calendar Quarter].[Q1 CY 2002]) = 2200
    
  31. 次の MDX ステートメントを実行して、トランザクションをコミットします。

    COMMIT TRANSACTION
    

    この時点で、Adventure Works DW リレーショナル データベースの "dbo.WriteTable_Fact Sales Quota" テーブルを検証し、書き戻しによって実際にセルがどうなったかを確認できます。セルは、このリレーショナル テーブルに書き込まれる差分 (-88800) になっています。元のファクト テーブルは変更されません。

writeback.mdx ファイル
/* What is the existing value? */
SELECT [Measures].[Sales Amount Quota] ON COLUMNS
FROM [Writeback]
WHERE ([Employee].[Employee].&[272],
[Date].[Calendar].[Calendar Quarter].&[2002]&[1])
GO
/* Update the cube with a new value */
UPDATE CUBE [Writeback]
SET ([Employee].[Employee].&[272],
[Date].[Calendar].[Calendar Quarter].&[2002]&[1]) = 33000 /* some different value */
GO
/* Commit it */
Commit Transaction
GO
/* See what the updated value is */
SELECT [Measures].[Sales Amount Quota] ON COLUMNS
FROM [Writeback]
WHERE ([Employee].[Employee].&[272],
[Date].[Calendar].[Calendar Quarter].&[2002]&[1])
GO
コマンド ラインの例

C:\>ascmd -S myserver -d "Adventure Works DW" -i writeback.mdx -o writeback_result.xml -v cube="[Writeback]"

Writeback_result.xml
<multiple-batches>
   <return xmlns="urn:schemas-microsoft-com:xml-analysis">
      <root xmlns= . . .>
         <...metadata about the result set...>
<CellData xmlns="urn:schemas-microsoft-com:xml-analysis:mddataset">
  <Cell CellOrdinal="0">
     <Value xsi:type="xsd:double" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">0</Value> 
     <FmtValue>2200</FmtValue> 
  </Cell>
</CellData>
      </root>
   </return>
   <return xmlns="urn:schemas-microsoft-com:xml-analysis">
      <root xmlns="urn:schemas-microsoft-com:xml-analysis:empty" /> 
   </return>
   <return xmlns="urn:schemas-microsoft-com:xml-analysis">
      <root xmlns="urn:schemas-microsoft-com:xml-analysis:empty" /> 
   </return>
   <return xmlns="urn:schemas-microsoft-com:xml-analysis">
      <root xmlns= . . .>
         <...metadata about the result set...>
<CellData xmlns="urn:schemas-microsoft-com:xml-analysis:mddataset">
  <Cell CellOrdinal="0">
     <Value xsi:type="xsd:double" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">0</Value> 
     <FmtValue>33000</FmtValue> 
  </Cell>
</CellData>
      </root>
   </return>
</multiple-batches>

上記の中ほどに、UPDATE CUBE ステートメントと COMMIT TRANSACTION ステートメントに対する 2 つの空の結果セットがあることに注目してください。

リリース 履歴

2006 年 12 月 12 日

変更内容 :
  • 新しい機能 (複数のバッチのサポート) について説明を追加しました。
  • 新しい機能の使い方を説明するため、例を追加しました。

2006 年 7 月 17 日

変更内容 :
  • 2 つの新しい機能、カスタム XMLA 要求と入力ストリーム内のコマンドの種類の自動検出について記載しました。
  • 新しい機能の使い方を説明するため、更新した例を追加しました。

参照

その他の技術情報

XML for Analysis (XMLA)
XML for Analysis リファレンス (XMLA)
Discover メソッド (XMLA)
Execute メソッド (XMLA)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手