当 Analysis Services 数据库管理员(dba)希望将多维模型数据库或表格模型数据库移到其他位置时,通常会出现这种情况。 这些情况通常由业务需求驱动,例如将数据库移动到其他磁盘以提高性能、获得数据库增长空间或升级产品。
可以通过多种方式移动数据库。 本文档介绍以下常见方案:
交互式使用 SSMS
以编程方式使用 AMO
使用 XMLA 编写脚本
所有方案都需要用户访问数据库文件夹,并使用方法将文件移动到所需的最终目标。
注释
分离数据库而不向其分配密码,使数据库处于不安全状态。 建议为数据库分配密码以保护机密信息。 此外,应将相应的访问安全性应用于数据库文件夹、子文件夹和文件,以防止对它们进行未经授权的访问。
过程
使用 SSMS 以交互方式移动数据库
找到要移动到 SSMS 的左侧或右窗格中的数据库。
右键单击数据库并选择“ 分离...”
为要分离的数据库分配密码,然后单击“ 确定 ”以执行分离命令。
使用任何作系统机制或标准方法移动文件以将数据库文件夹移动到新位置。
在 SSMS 的左侧或右窗格中找到 “数据库” 文件夹。
右键单击 “数据库” 文件夹,然后选择“ 附加...”
在 文件夹 文本框中,键入数据库文件夹的新位置。 或者,可以使用浏览按钮(...)查找数据库文件夹。
选择数据库的
ReadWrite
模式。键入步骤 3 中使用的密码,然后单击“ 确定 ”以执行附加命令。
使用 AMO 以编程方式移动数据库
- 在 C# 应用程序中,调整以下示例代码并完成指示的任务。
private void MoveDb(Server server, string dbName,
string dbInitialLocation, string dbFinalLocation,
string dbPassword, ReadWriteMode dbReadWriteMode)
{
//Verify dbInitialLocation exists before continuing
if (server.Databases.ContainsName(dbName))
{
Database db;
//Save current cursor and change cursor to Cursors.WaitCursor
db = server.Databases[dbName];
db.Detach(dbPassword);
//Add your own code to copy the database files to the destination where you intend to attach the database
//Verify dbFinalLocation exists before continuing
server.Attach(dbFinalLocation, dbReadWriteMode, dbPassword);
//Restore cursor to its original
}
}
在 C# 应用程序中,使用必要的参数调用
MoveDb()
。编译并执行代码以移动数据库。
使用 XMLA 通过脚本移动数据库
在 SSMS 中打开新的 XMLA 选项卡。
复制 XMLA 的以下脚本模板
<Detach xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>%dbName%</DatabaseID>
<Password>%password%</Password>
</Object>
</Detach>
将
%dbName%
替换为数据库名称,将%password%
替换为密码。 % 字符是模板的一部分,必须删除。执行 XMLA 命令。
使用任何作系统机制或标准方法移动文件以将数据库文件夹移动到新位置。
在新的 XMLA 选项卡中复制 XMLA 的以下脚本模板
<Attach xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
<Folder>%dbFolder%</Folder>
<ReadWriteMode xmlns="https://schemas.microsoft.com/analysisservices/2008/engine/100">%ReadOnlyMode%</ReadWriteMode>
</Attach>
替换
%dbFolder%
为数据库文件夹的完整 UNC 路径,%ReadOnlyMode%
为相应的值ReadOnly
或ReadWrite
,以及%password%
为密码。 % 字符是模板的一部分,必须删除。执行 XMLA 命令。
另请参阅
Attach*
Microsoft.AnalysisServices.Database.Detach*
附加和分离分析服务数据库
数据库存储位置
Database ReadWriteModes
附加元素
分离元素
ReadWriteMode 元素
DbStorageLocation 元素