次の方法で共有


オブジェクトの作成と変更 (XMLA)

主要なオブジェクトは、個別に作成、変更、削除することができます。主要なオブジェクトには以下のオブジェクトが含まれます。

  • サーバー

  • データベース

  • ディメンション

  • キューブ

  • メジャー グループ

  • パーティション

  • 分析観点

  • マイニング モデル

  • ロール

  • サーバーまたはデータベースに関連付けられているコマンド

  • データ ソース

MicrosoftSQL ServerAnalysis Services のインスタンス上の主要なオブジェクトを作成するには Create コマンドを、インスタンス上の既存の主要なオブジェクトを変更するには Alter コマンドを使用します。これらのコマンドは両方とも、Execute メソッドを使用して実行します。

オブジェクトの作成

Create メソッドを使用してオブジェクトを作成する場合は、まず、作成する Analysis Services オブジェクトを含む親オブジェクトを識別する必要があります。親オブジェクトは、Create コマンドの ParentObject プロパティでオブジェクト参照を指定することによって識別します。それぞれのオブジェクト参照には、Create コマンドの対象の親オブジェクトを一意に識別するのに必要なオブジェクト識別子が含まれます。オブジェクト参照の詳細については、「オブジェクトの定義と識別 (XMLA)」を参照してください。

たとえば、キューブに新しいメジャー グループを作成するには、キューブへのオブジェクト参照を指定する必要があります。ParentObject プロパティでのキューブへのオブジェクト参照には、データベース識別子とキューブ識別子の両方が含まれます。別のデータベースでも同じキューブ識別子が使用されている可能性があるためです。

ObjectDefinition 要素には、作成する主要なオブジェクトを定義する Analysis Services Scripting Language (ASSL) 要素が含まれます。ASSL の詳細については、「ASSL」を参照してください。

Create コマンドの AllowOverwrite 属性を true に設定すると、指定された識別子を持つ既存の主要なオブジェクトを上書きできます。そうしない場合、親オブジェクト内に指定された識別子を持つ主要なオブジェクトが既に存在するときに、エラーが発生します。

Create コマンドの詳細については、「Create 要素 (XMLA)」を参照してください。

セッション オブジェクトの作成

セッション オブジェクトは一時オブジェクトであり、クライアント アプリケーションで使用される明示的または暗黙的なセッションでのみ使用でき、セッションの終了時には削除されます。セッション オブジェクトは、Create コマンドの Scope 属性を Session に設定することによって作成できます。

注意注意

設定値 Session を使用する場合、ObjectDefinition 要素に含めることができるのは ASSL 要素 DimensionCube、または MiningModel だけです。

オブジェクトの変更

Alter メソッドを使用してオブジェクトを変更する場合は、まず、Alter コマンドの Object プロパティにオブジェクト参照を指定することによって、変更するオブジェクトを識別する必要があります。それぞれのオブジェクト参照には、Alter コマンドの対象のオブジェクトを一意に識別するのに必要なオブジェクト識別子が含まれます。オブジェクト参照の詳細については、「オブジェクトの定義と識別 (XMLA)」を参照してください。

たとえば、キューブの構造を変更するためには、キューブへのオブジェクト参照を指定する必要があります。Object プロパティでのキューブへのオブジェクト参照には、データベース識別子とキューブ識別子の両方が含まれます。別のデータベースでも同じキューブ識別子が使用されている可能性があるためです。

ObjectDefinition 要素には、変更する主要なオブジェクトを定義する ASSL 要素が含まれます。ASSL の詳細については、「ASSL」を参照してください。

Alter コマンドの AllowCreate 属性を true に設定すると、指定された主要なオブジェクトが存在しない場合に、それを作成することができます。そうしない場合、指定された主要なオブジェクトが存在していないときに、エラーが発生します。

ObjectExpansion 属性の使用

主要なオブジェクトのプロパティのみを変更し、主要なオブジェクトに格納される副次オブジェクトの再定義を行わない場合、Alter コマンドの ObjectExpansion 属性を ObjectProperties に設定できます。ObjectDefinition プロパティには、主要なオブジェクトのプロパティに対応する要素だけを含めればよく、その場合 Alter コマンドは主要なオブジェクトに関連付けられている副次オブジェクトに変更を加えません。

主要なオブジェクトに対する副次オブジェクトを再定義するには、ObjectExpansion 属性を ExpandFull に設定します。オブジェクト定義には、主要なオブジェクトに格納されるすべての副次オブジェクトを含める必要があります。Alter コマンドの ObjectDefinition プロパティに、主要なオブジェクトに格納される副次オブジェクトが明示的に含められていない場合、含まれない副次オブジェクトは削除されます。

セッション オブジェクトの変更

Create コマンドによって作成したセッション オブジェクトを変更するには、Alter コマンドの Scope 属性を Session に設定します。

注意注意

Session 設定を使用する場合、ObjectDefinition 要素に含めることができるのは、ASSL の DimensionCube、または MiningModel 要素だけです。

下位オブジェクトの作成または変更

Create または Alter コマンドで作成または変更できるのは最上位の主要なオブジェクトだけですが、作成中または変更中の主要なオブジェクトには、囲んでいる ObjectDefinition プロパティの中に、従属する他の主要なオブジェクトや副次オブジェクトの定義を含めることができます。たとえば、キューブを定義する場合、ParentObject で親データベースを指定します。ObjectDefinition でのキューブ定義にはキューブのメジャー グループを定義でき、さらにメジャー グループ内ではそれぞれのメジャー グループのパーティションを定義できます。副次オブジェクトは、それを格納する主要なオブジェクトの中でのみ定義できます。主要なオブジェクトと副次オブジェクトの詳細については、「データベース オブジェクト (Analysis Services - 多次元データ)」を参照してください。

説明

次の例では、MicrosoftSQL Server のサンプル データベース、Adventure Works DW を参照するリレーショナル データ ソースを作成します。

コード

<Create xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
    <ParentObject>
        <DatabaseID>Adventure Works DW</DatabaseID>
    </ParentObject>
    <ObjectDefinition>
        <DataSource xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="RelationalDataSource">
            <ID>Adventure Works DW</ID>
            <Name>Adventure Works DW</Name>
            <ConnectionString>Data Source=localhost;Initial Catalog=AdventureWorksDW;Integrated Security=True</ConnectionString>
            <ImpersonationInfo>
                <ImpersonationMode>ImpersonateServiceAccount</ImpersonationMode>
            </ImpersonationInfo>
            <ManagedProvider>System.Data.SqlClient</ManagedProvider>
            <Timeout>PT0S</Timeout>
        </DataSource>
    </ObjectDefinition>
</Create>

説明

次の例では、前の例で作成されたリレーショナル データ ソースを変更して、データ ソースのクエリ タイムアウトを 30 秒に設定します。

コード

<Alter ObjectExpansion="ObjectProperties" xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
    <Object>
        <DatabaseID>Analysis Services Project1</DatabaseID>
        <DataSourceID>Adventure Works DW2</DataSourceID>
    </Object>
    <ObjectDefinition>
        <DataSource xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="RelationalDataSource">
            <ID>Adventure Works DW2</ID>
            <Name>Adventure Works DW2</Name>
            <ConnectionString>Data Source=fr-dwk-02;Initial Catalog=AdventureWorksDW;Integrated Security=True</ConnectionString>
            <ManagedProvider>System.Data.SqlClient</ManagedProvider>
            <Timeout>PT30S</Timeout>
        </DataSource>
    </ObjectDefinition>
</Alter>

コメント

Alter コマンドの ObjectExpansion 属性は、ObjectProperties に設定されています。この設定により、副次オブジェクトである ImpersonationInfo 要素は ObjectDefinition で定義されるデータ ソースから除外されます。そのため、そのデータ ソースに関する権限借用情報は、最初の例で指定したとおりにサービス アカウントに対して設定されたままになります。