当 Analysis Services 数据库管理员(dba)想要更改表格或多维数据库的读/写模式时,通常会出现这种情况。 这些情况通常由业务需求驱动,例如在 Analysis Services 服务器池之间共享数据库,以提供更好的用户体验。
可以通过多种方式切换数据库模式。 本文档介绍以下常见方案:
使用 SQL Server Management Studio 以交互方式
以编程方式使用 AMO
使用 XMLA 编写脚本
过程
使用 Management Studio 以交互方式切换数据库的读/写模式
在 Management Studio 的左侧或右窗格中找到要切换的数据库。
右键单击数据库并选择“ 属性”。 找到数据库文件夹并记下位置。 空数据库存储位置指示数据库文件夹位于服务器数据文件夹中。
重要
一旦分离数据库,Management Studio 将无法再帮助你获取数据库位置。
右键单击数据库并选择“ 分离...”
为要分离的数据库分配密码,然后单击“ 确定 ”以执行分离命令。
在 Management Studio 的左侧或右窗格中找到 “数据库” 文件夹。
右键单击 “数据库” 文件夹,然后选择“ 附加...”
在 文件夹 文本框中,键入数据库文件夹的原始位置。 或者,可以使用浏览按钮(...)查找数据库文件夹。
选择数据库的读/写模式。
键入步骤 3 中使用的密码,然后单击“ 确定 ”以执行附加命令。
使用 AMO 通过编程方式将数据库模式切换为读/写模式
- 在 C# 应用程序中,调整以下示例代码并完成指示的任务。
private void SwitchReadWrite(Server server, string dbName,
ReadWriteMode dbReadWriteMode)
{
if (server.Databases.ContainsName(dbName))
{
Database db;
string databaseLocation;
db = server.Databases[dbName];
databaseLocation = db.DbStorageLocation;
if (databaseLocation == null)
{
string dataDir = server.ServerProperties["DataDir"].Value;
String[] possibleFolders = Directory.GetDirectories(dataDir, string.Concat(dbName,"*"), SearchOption.TopDirectoryOnly);
if (possibleFolders.Length > 1)
{
List<String> sortedFolders = new List<string>(possibleFolders.Length);
sortedFolders.AddRange(possibleFolders);
sortedFolders.Sort();
databaseLocation = sortedFolders[sortedFolders.Count - 1];
}
else
{
databaseLocation = possibleFolders[0];
}
}
db.Detach();
server.Attach(databaseLocation, dbReadWriteMode);
}
}
在 C# 应用程序中,使用必要的参数调用
SwitchReadWrite()
。编译并执行代码以移动数据库。
使用 XMLA 通过脚本将读/写模式切换到数据库
在 Management Studio 的左侧或右窗格中找到要切换的数据库。
右键单击数据库并选择“ 属性”。 找到数据库文件夹并记下位置。 空数据库存储位置指示数据库文件夹位于服务器数据文件夹中。
重要
一旦分离数据库,Management Studio 将无法再帮助你获取数据库位置。
在 Management Studio 中打开新的 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 元素