共用方式為


建立和改變物件 (XMLA)

可以獨立地建立、改變和刪除主要物件。主要物件包括下列物件:

  • 伺服器

  • 資料庫

  • 維度

  • Cube

  • 量值群組

  • 資料分割

  • 檢視方塊

  • 採礦模型

  • 角色

  • 與伺服器或資料庫相關聯的命令

  • 資料來源

您使用 Create 命令在 Microsoft SQL Server Analysis Services 的執行個體上建立主要物件,以及 Alter 命令來改變執行個體上的現有主要物件。兩個命令都使用 Execute 方法來執行。

建立物件

當您使用 Create 方法建立物件時,必須先識別包含要建立的 Analysis Services 物件之父物件。您可以提供 Create 命令的 ParentObject 屬性中的物件參考,來識別父物件。每個物件參考都包含唯一識別 Create 命令的父物件所需的物件識別碼。如需物件參考的詳細資訊,請參閱<定義和識別物件 (XMLA)>。

例如,您必須提供物件參考給 Cube,來為 Cube 建立新的量值群組。在 ParentObject 屬性中的 Cube 之物件參考,包含資料庫識別碼與 Cube 識別碼,因為相同的 Cube 識別碼可能會用於不同的資料庫。

ObjectDefinition 元素包含定義要建立的主要物件之分析服務指令碼語言 (ASSL) 元素。如需有關 ASSL 的詳細資訊,請參閱<ASSL>。

如果您將 Create 命令的 AllowOverwrite 屬性設定為 True,可以覆寫具有指定識別碼的現有主要物件。否則,如果具有指定識別碼的主要物件已經在父物件中,就會發生錯誤。

如需有關 Create 命令的詳細資訊,請參閱<Create 元素 (XMLA)>。

建立工作階段物件

工作階段物件是只能用於用戶端應用程式所使用的明確或隱含工作階段的暫存物件,而且會在結束工作階段時刪除。您可以將 Create 命令的 Scope 屬性設定為 Session,以建立工作階段物件。

[!附註]

當您使用 Session 設定時,ObjectDefinition 元素只能包含 DimensionCubeMiningModel ASSL 元素。

改變物件

當您使用 Alter 方法修改物件時,必須先提供 Alter 命令的 Object 屬性中之物件參考,以識別要修改的物件。每個物件參考都包含唯一識別 Alter 命令的物件所需的物件識別碼。如需物件參考的詳細資訊,請參閱<定義和識別物件 (XMLA)>。

例如,您必須提供物件參考給 Cube,以修改 Cube 的結構。在 Object 屬性中的 Cube 之物件參考,包含資料庫識別碼與 Cube 識別碼,因為相同的 Cube 識別碼可能會用於不同的資料庫。

ObjectDefinition 元素包含定義要修改的主要物件之 ASSL 元素。如需有關 ASSL 的詳細資訊,請參閱<ASSL>。

如果您將 Alter 命令的 AllowCreate 屬性設定為 True,只要物件不存在,即可建立指定的主要物件。否則,如果指定的主要物件尚未存在,就會發生錯誤。

使用 ObjectExpansion 屬性

如果您只變更主要物件的屬性,而且未重新定義主要物件所含的次要物件,可以將 Alter 命令的 ObjectExpansion 屬性設定為 ObjectProperties。ObjectDefinition 屬性就只需要包含主要物件之屬性的元素,而且 Alter 命令不會改變與主要物件關聯的次要物件。

若要為主要物件重新定義次要物件,必須將 ObjectExpansion 屬性設定為 ExpandFull,而且物件定義必須包括主要物件所含的所有次要物件。如果 Alter 命令的 ObjectDefinition 屬性未明確包括主要物件所含的次要物件,則會刪除未包括的次要物件。

改變工作階段物件

若要修改 Create 命令建立的工作階段物件,請將 Alter 命令的 Scope 屬性設定為 Session。

[!附註]

當您使用 Session 設定時,ObjectDefinition 元素只能包含 DimensionCubeMiningModel ASSL 元素。

建立或改變從屬物件

雖然 Create 或 Alter 命令只會建立或修改一個最主要的物件,所建立或修改的主要物件,在其他主要物件或是其從屬的次要物件之封閉式 ObjectDefinition 屬性中,仍可包含定義。例如,如果您定義一個 Cube,在 ParentObject 中指定父資料庫,並且在 ObjectDefinition 的 Cube 定義中,可以為 Cube 定義量值群組,而且在量值群組中,可以為每個量值群組,定義資料分割。次要物件只能在包含它的主要物件之下定義。如需有關主要和次要物件的詳細資訊,請參閱<資料庫物件 (Analysis Services - 多維度資料)>。

範例

說明

下列範例所建立的關聯式資料來源,會參考 Adventure Works DW 範例 Microsoft SQL Server 資料庫。

程式碼

<Create xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
    <ParentObject>
        <DatabaseID>Adventure Works DW 2008R2</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 2008R2</ID>
            <Name>Adventure Works DW 2008R2</Name>
            <ConnectionString>Data Source=localhost;Initial Catalog=AdventureWorksDW2008R2;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 2008R2</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 2008R2</ID>
            <Name>Adventure Works DW2 2008R2</Name>
            <ConnectionString>Data Source=fr-dwk-02;Initial Catalog=AdventureWorksDW2008R2;Integrated Security=True</ConnectionString>
            <ManagedProvider>System.Data.SqlClient</ManagedProvider>
            <Timeout>PT30S</Timeout>
        </DataSource>
    </ObjectDefinition>
</Alter>

註解

Alter 命令的 ObjectExpansion 屬性是設定為 ObjectProperties。此設定允許 ImpersonationInfo 元素、次要物件從 ObjectDefinition 定義的資料來源中排除。因此,資料來源的模擬資訊仍然會設定成服務帳號,如第一個範例中所指定。