创建和更改对象 (XMLA)

可以独立创建、更改和删除主要对象。主要对象包括以下对象:

  • 服务器

  • 数据库

  • 维度

  • 多维数据集

  • 度量值组

  • 分区

  • 透视

  • 挖掘模型

  • 角色

  • 与服务器或数据库关联的命令

  • 数据源

您可以使用 Create 命令在 Microsoft SQL Server Analysis Services 实例上创建主要对象,并使用 Alter 命令更改实例上的现有主要对象。这两个命令都使用 Execute 方法运行。

创建对象

使用 Create 方法创建对象时,必须首先标识包含要创建的 Analysis Services 对象的父对象。可通过在 Create 命令的 ParentObject 属性中提供对象引用来标识父对象。每一个对象引用都包含为 Create 命令唯一标识父对象时所需的对象标识符。有关对象引用的详细信息,请参阅定义和标识对象 (XMLA)

例如,若要为某一多维数据集创建新的度量值组,则必须提供对该多维数据集的对象引用。ParentObject 属性中多维数据集的对象引用同时包含数据库标识符和多维数据集标识符,因为同一多维数据集标识符可能用于不同的数据库上。

ObjectDefinition 元素包含用于定义要创建的主要对象的 Analysis Services 脚本语言 (ASSL) 元素。有关 ASSL 的详细信息,请参阅 ASSL

如果将 Create 命令的 AllowOverwrite 属性设置为 True,则会覆盖具有指定标识符的现有主要对象。否则,如果具有指定标识符的主要对象仍存在于父对象中,则会发生错误。

有关 Create 命令的详细信息,请参阅Create 元素 (XMLA)

创建会话对象

会话对象是一些临时对象,它们仅可用于客户端应用程序所使用的显式或隐式会话,且在会话结束后会删除这些会话对象。可以通过将 Create 命令的 Scope 属性设置为 Session 来创建会话对象。

注意注意

使用 Session 设置时,ObjectDefinition 元素只能包含 DimensionCubeMiningModel ASSL 元素。

更改对象

使用 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 元素只能包含 DimensionCubeMiningModel ASSL 元素。

创建或更改从属对象

尽管 Create 或 Alter 命令创建或更改的只是一个最顶层的主要对象,但要创建或修改的主要对象可在包含它的 ObjectDefinition 属性中包含从属于该主要对象的其他主要对象和次要对象的定义。例如,定义某个多维数据集时,可在 ParentObject 中指定父数据库,再在 ObjectDefinition 的多维数据集定义中定义该多维数据集的度量值组,然后在该度量值组中定义每一个度量值组的分区。次要对象只能在其所属的主要对象下定义。有关主要对象和次要对象的详细信息,请参阅 数据库对象(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 中定义的数据源中排除。因此,该数据源的模拟信息仍设置为在第一个示例中所指定的服务帐户。