在 ReadOnly 和 ReadWrite 模式之间切换 Analysis Services 数据库

适用于: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

SQL Server Analysis Services数据库管理员可以更改表格或多维数据库的读/写模式,作为在多个仅限查询的服务器之间分配查询工作负荷的更大工作量的一部分。

可以通过多种方式来切换数据库模式。 本文档介绍下列常见方案:

  • 以交互方式使用 SQL Server Management Studio

  • 使用 AMO 以编程方式

  • 使用 XMLA 或 TMSL 的脚本

使用 Management Studio 以交互方式切换数据库的读/写模式

  1. 在“对象资源管理器”中,右键单击数据库并选择“属性”。

    记下其位置。 如果数据库存储位置为空,则表明数据库文件夹位于服务器数据文件夹中。

  2. 右键单击数据库,然后选择“ 分离...”

  3. 为要分离的数据库分配一个密码,然后单击 “确定” 执行分离命令。

  4. 在“对象资源管理器”中,右键单击“数据库”文件夹,然后选择“附加...”

  5. “文件夹” 文本框中,键入数据库文件夹的原始位置。 或者,可以使用浏览按钮 (...) 查找数据库文件夹。

  6. 针对该数据库选择读写模式。

  7. 键入密码,然后单击 “确定”执行附加命令。

使用 AMO 以编程方式切换数据库的读写模式

在 C# 应用程序中,用必要的参数调用 SwitchReadWrite() 。 编译和执行您的代码以移动该数据库。

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 dataDir = server.ServerProperties["DataDir"].Value;  
                 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);  
    }  
}  
  

使用 XMLA 借助于脚本切换数据库的读/写模式

以下说明适用于兼容模式 1050、1100 或 1103 下的多维数据库和表格数据库。

  1. 在“对象资源管理器”中,右键单击数据库并选择“属性”。

    记下其位置。 如果数据库存储位置为空,则表明数据库文件夹位于服务器数据文件夹中。

  2. 右键单击数据库,然后选择“ 分离...”

  3. 在 Management Studio 中打开新的 XMLA 选项卡。

  4. 复制下面的 XMLA 脚本模板:

    <Detach xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">  
       <Object>  
          <DatabaseID>%dbName%</DatabaseID>  
          <Password>%password%</Password>  
       </Object>  
    </Detach>  
    
  5. %dbName% 替换为数据库名称,将 %password% 替换为您的密码。 % 字符是模板的一部分,必须将其删除。

  6. 执行 XMLA 命令。

  7. 在新的 XMLA 选项卡中复制下面的 XMLA 脚本模板

    <Attach xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">  
       <Folder>%dbFolder%</Folder>  
       <ReadWriteMode xmlns="http://schemas.microsoft.com/analysisservices/2008/engine/100">%ReadOnlyMode%</ReadWriteMode>  
    </Attach>  
    
  8. %dbFolder% 替换为数据库文件夹的完整 UNC 路径,将 %ReadOnlyMode% 替换为相应值( ReadOnlyReadWrite),并将 %password% 替换为你的密码。 % 字符是模板的一部分,必须将其删除。

  9. 执行 XMLA 命令。

另请参阅

Analysis Services 中的高可用性和可伸缩性
附加和分离 Analysis Services 数据库
数据库存储位置
数据库 ReadWriteMode
附加元素
分离元素
ReadWriteMode 元素
DbStorageLocation 元素