备份、还原和同步数据库 (XMLA)

在 XML for Analysis 中,有三个命令分别用于备份、还原和同步数据库:

  • Backup 命令使用 Analysis Services 备份文件 (.abf) 备份 Microsoft SQL Server Analysis Services 数据库,如备份数据库一节中所述。

  • Restore 命令从 .abf 文件还原 Analysis Services 数据库,如还原数据库一节中所述。

  • Synchronize 命令同步一个 Analysis Services 数据库与另一个数据库的数据和元数据,如同步数据库一节中所述。

备份数据库

如前所述,Backup 命令将特定的 Analysis Services 数据库备份到备份文件。Backup 命令有多个属性,可用于指定要备份的数据库、要使用的备份文件、如何备份安全定义以及要备份的远程分区。

安全说明安全说明

对于每个备份文件,运行备份命令的用户必须对每个文件的指定备份位置拥有写入权限。此外,用户必须具有以下角色之一:Analysis Services 实例的服务器角色成员,或对要备份的数据库拥有完全控制(管理员)权限的数据库角色成员。

指定数据库和备份文件

若要指定要备份的数据库,请设置 Backup 命令的 Object 属性。Object 属性必须包含数据库的对象标识符,否则会发生错误。

若要指定要创建供备份过程使用的文件,请设置 Backup 命令的 File 属性。File 属性应设置为要创建的备份文件的 UNC 路径和文件名。

除了指定要用于备份的文件,还可以设置为备份文件指定以下选项:

  • 如果将 AllowOverwrite 属性设置为 true,在指定的备份文件已存在的情况下,Backup 命令将覆盖该文件。如果将 AllowOverwrite 属性设置为 false,则指定的备份文件已存在时将发生错误。

  • 如果将 ApplyCompression 属性设置为 true,则创建备份文件后将对其进行压缩。

  • 如果将 Password 属性设置为任何非空值,则将使用该指定密码加密备份文件。

    安全说明安全说明

    如果未指定 ApplyCompression 和 Password 属性,备份文件将以明文形式存储连接字符串中包含的用户名和密码。以明文形式存储的数据可以被检索出来。为了提高安全性,请使用 ApplyCompression 和 Password 设置来压缩和加密备份文件。

备份安全设置

Security 属性确定 Backup 命令是否备份对 Analysis Services 数据库定义的安全定义,如角色和权限。Security 属性还确定备份文件是否包含定义为安全定义成员的 Windows 用户帐户和用户组。

Security 属性的值限制为下表中列出的字符串之一。

说明

SkipMembership

在备份文件中包括安全定义,但不包括成员身份信息。

CopyAll

在备份文件中包括安全定义和成员身份信息。

IgnoreSecurity

不在备份文件中包括安全定义。

备份远程分区

若要备份 Analysis Services 数据库中的远程分区,请将 Backup 命令的 BackupRemotePartitions 属性设置为 true。此设置将使 Backup 命令为用于存储数据库的远程分区的每个远程数据源创建一个远程备份文件。

对于要备份的每个远程数据源,可以通过在 Backup 命令的 Locations 属性中包含一个 Location 元素来指定它的相应备份文件。Location 元素的 File 属性应设置为远程备份文件的 UNC 路径和文件名,该元素的 DataSourceID 属性应设置为数据库中定义的远程数据源的标识符。

还原数据库

Restore 命令从备份文件中还原指定的 Analysis Services 数据库。Restore 命令有多个属性,可用于指定要还原的数据库、要使用的备份文件、如何还原安全定义、要存储的远程分区以及关系 OLAP (ROLAP) 对象的重定位。

安全说明安全说明

对于每个备份文件,运行还原命令的用户必须对每个文件的指定备份位置具有读取权限。若要还原未在服务器上安装的 Analysis Services 数据库,用户还必须是此 Analysis Services 实例的服务器角色成员。若要覆盖 Analysis Services 数据库,用户必须具有以下角色之一:此 Analysis Services 实例的服务器角色成员,或对要还原的数据库拥有完全控制(管理员)权限的数据库角色成员。

注意注意

还原现有数据库之后,还原了此数据库的用户可能会失去对还原后的数据库的访问权限。如果在执行备份时用户不是服务器角色成员或者不是拥有完全控制(管理员)权限的数据库角色成员,则会出现这种失去访问权限的情形。

指定数据库和备份文件

Restore 命令的 DatabaseName 属性必须包含数据库的对象标识符,否则会发生错误。如果指定的数据库已经存在,AllowOverwrite 属性将确定是否覆盖现有数据库。如果 AllowOverwrite 属性设置为 false 并且指定的数据库已经存在,则将发生错误。

应将 Restore 命令的 File 属性设置为要还原到指定数据库的备份文件的 UNC 路径和文件名。还可以设置指定备份文件的 Password 属性。如果 Password 属性设置为任何非空值,则将使用该指定密码对备份文件进行解密。如果备份文件未加密,或者指定的密码与用于加密备份文件的密码不相符,则会发生错误。

还原安全设置

Security 属性确定 Restore 命令是否还原对 Analysis Services 数据库定义的安全定义,如角色和权限。Security 属性还确定 Restore 命令是否包含定义为安全定义成员的 Windows 用户帐户和用户组作为还原过程的一部分。

此元素的值限定为下表中列出的字符串之一。

说明

SkipMembership

在数据库中包括安全定义,但不包括成员身份信息。

CopyAll

在数据库中包括安全定义和成员身份信息。

IgnoreSecurity

不在数据库中包括安全定义。

还原远程分区

对于在前述 Backup 命令中创建的每个远程备份文件,可以通过在 Restore 命令的 Locations 属性中包含一个 Location 元素来还原该备份文件的相关远程分区。每个 Location 元素的 DataSourceType 属性必须显式设置为 Remote 或者不包含该属性。

对于每个指定的 Location 元素,Analysis Services 实例将访问在 DataSourceID 属性中指定的远程数据源,以还原在 File 属性中指定的远程备份文件中定义的分区。除了 DataSourceID 和 File 属性外,下列属性也可供每个 Location 元素用于还原远程分区:

  • 若要覆盖在 DataSourceID 中指定的远程数据源的连接字符串,可将 Location 元素的 ConnectionString 属性设置为其他连接字符串。此时,Restore 命令将使用 ConnectionString 属性中包含的连接字符串。如果未指定 ConnectionString,Restore 命令将使用指定的远程数据源的备份文件中存储的连接字符串。可以使用 ConnectionString 设置将远程分区移到其他远程实例。但是不能使用 ConnectionString 设置将远程分区还原到包含已还原的数据库的同一实例。换言之,不能使用 ConnectionString 属性将远程分区放入本地分区。

  • 对于用于在远程数据源中存储远程分区的每个原始文件夹,可以指定 Folder 元素以指示将原始文件夹中存储的所有远程分区还原到的新文件夹。如果未指定 Folder 元素,Restore 命令将使用远程备份文件中包含的为远程分区指定的原始文件夹。

重定位 ROLAP 对象

Restore 命令无法还原使用 ROLAP 存储的对象的聚合或数据,因为此类信息存储在基础关系数据源的表中。但可以还原 ROLAP 对象的元数据。为了还原 ROLAP 对象的元数据,Restore 命令会对关系数据源重新创建表结构。

可以使用 Restore 命令中的 Location 元素重定位 ROLAP 对象。对于用于重定位数据源的每个 Location 元素,DataSourceType 属性必须显式设置为 Local。此外,还必须将 Location 元素的 ConnectionString 属性设置为新位置的连接字符串。在还原过程中,Restore 命令将使用 Location 元素的 ConnectionString 属性的值替换由 Location 元素的 DataSourceID 属性标识的数据源的连接字符串。

同步数据库

Synchronize 命令同步指定 Analysis Services 数据库和另一数据库的数据和元数据。Synchronize 命令有多个属性,可用于指定源数据库、如何同步安全定义、要同步的远程分区以及 ROLAP 对象的同步。

注意注意

只有服务器管理员和数据库管理员可以执行 Synchronize 命令。

指定源数据库

Synchronize 命令的 Source 属性包含两个属性:ConnectionString 和 Object。ConnectionString 属性包含源数据库所属实例的连接字符串,Object 属性包含源数据库的对象标识符。

目标数据库是 Synchronize 命令在其中运行的会话的当前数据库。

如果 Synchronize 命令的 ApplyCompression 属性设置为 true,从源数据库发送到目标数据库的信息将在发送前进行压缩。

同步安全设置

SynchronizeSecurity 属性确定 Synchronize 命令是否同步对源数据库定义的安全定义,如角色和权限。SynchronizeSecurity 属性还确定 Sychronize 命令是否包含定义为安全定义成员的 Windows 用户帐户和用户组。

此元素的值限定为下表中列出的字符串之一。

说明

SkipMembership

在目标数据库中包括安全定义,但不包括成员身份信息。

CopyAll

在目标数据库中包括安全定义和成员身份信息。

IgnoreSecurity

不在目标数据库中包括安全定义。

同步远程分区

对于源数据库中存在的每个远程数据源,可以通过在 Synchronize 命令的 Locations 属性中包含一个 Location 元素来同步每个关联的远程分区。对于每个 Location 元素,DataSourceType 属性必须显式设置为 Remote 或者不包含该属性。

为了定义和连接到目标数据库中的远程数据源,Synchronize 命令使用在 Location 元素的 ConnectionString 属性中定义的连接字符串。然后,Synchronize 命令使用 Location 元素的 DataSourceID 属性标识要同步的远程分区。Synchronize 命令同步在源数据库的 DataSourceID 属性中指定的远程数据源中的远程分区和在目标数据库的 DataSourceID 属性中指定的远程数据源中的远程分区。

对于用于在源数据库的远程数据源中存储远程分区的每个原始文件夹,还可以在 Location 元素中指定 Folder 元素。Folder 元素指示目标数据库的新文件夹,要将该文件夹中的分区与远程数据源中原始文件夹中存储的所有远程分区同步。如果未指定 Folder 元素,Synchronize 命令将使用源数据库中包含的为远程分区指定的原始文件夹。

同步 ROLAP 对象

Synchronize 命令无法同步使用 ROLAP 存储的对象的聚合或数据,因为此类信息存储在基础关系数据源的表中。但可以同步 ROLAP 对象的元数据。为了同步元数据,Synchronize 命令会对关系数据源重新创建表结构。

可以使用 Synchronize 命令中的 Location 元素同步 ROLAP 对象。对于用于重定位数据源的每个 Location 元素,DataSourceType 属性必须显式设置为 Local。此外,还必须将 Location 元素的 ConnectionString 属性设置为新位置的连接字符串。在同步过程中,Synchronize 命令将使用 Location 元素的 ConnectionString 属性的值替换由 Location 元素的 DataSourceID 属性标识的数据源的连接字符串。