数据库附加和分离

在某些情况下,Analysis Services 数据库管理员 (dba) 经常需要使数据库脱机一段时间,然后在同一服务器实例或其他服务器实例上使数据库恢复联机。根据业务需要(例如,将数据库移到另一个磁盘以获得更好的性能、为数据库扩容获取空间或升级产品),经常需要进行上述操作。对于上述所有情况,通过 Attach 和 Detach 命令,Analysis Services dba 可以很容易地使数据库脱机和恢复联机。

附加和分离命令。

通过 Attach 命令可使已脱机的数据库恢复联机。可以将该数据库附加到原始的服务器实例,也可以附加到另一个实例。在附加数据库时,用户可以为该数据库指定 ReadWriteMode 设置。使用 Detach 命令可使数据库与服务器脱机。

附加和分离命令的用法

Attach 命令用于使现有数据库结构联机。如果该数据库是在 ReadWrite 模式下附加的,则只能将其附加到服务器实例一次。但是,如果此数据库是在 ReadOnly 模式下附加的,则可以将其多次附加到不同的服务器实例。但是,不能将同一数据库多次附加到同一服务器实例。即使已将数据复制到不同的文件夹中,在尝试多次附加同一数据库时也会引发错误。

重要说明重要提示

如果分离数据库时需要输入密码,则附加数据库时需要输入相同的密码。

Detach 命令用于使现有数据库结构脱机。分离数据库时,应提供一个密码来保护机密的元数据。

重要说明重要提示

若要保护数据文件的内容,应针对文件夹、子文件夹和数据文件使用访问控制列表。

分离数据库时,服务器会执行下列步骤。

分离读/写数据库

分离只读数据库

  1. 服务器会对数据库上的 CommitExclusive 锁发出请求

  2. 服务器会等待,直到提交或回滚所有正在进行的事务

  3. 服务器会构建分离数据库必须具备的所有元数据

  4. 将数据库标记为已删除

  5. 服务器提交事务

  1. 将数据库标记为已删除

  2. 服务器提交事务

注意注意
不能更改只读数据库的分离密码。如果为已包含密码的附加数据库提供密码参数,则会产生错误。

Attach 和 Detach 命令必须作为单独的操作执行。在同一事务中,不能将它们与其他操作一起执行。同样,Attach 和 Detach 命令都是原子事务命令。这意味着操作只有成功或失败两种情况。数据库不会处于未完成的状态。

重要说明重要提示

执行 Detach 命令需要服务器或数据库管理员权限。

重要说明重要提示

执行 Attach 命令需要服务器管理员权限。