在 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以互動方式切換資料庫的讀取/寫入模式
在 [物件總管] 中,以滑鼠右鍵按兩下資料庫,然後選取 [屬性]
。 請注意位置。 空的資料庫儲存位置表示資料庫資料夾位於伺服器資料資料資料夾中。
以滑鼠右鍵按兩下資料庫,然後選取 [卸離...
將密碼指派給要卸離的資料庫,然後按兩下 [確定] [確定] 以執行卸離命令。
在 [物件總管] 中,以滑鼠右鍵按兩下 [Databases] 資料夾,然後選取 [附加...
在 [資料夾] 文字框中,輸入資料庫資料夾的原始位置。 或者,您可以使用瀏覽按鈕 (...) 來尋找資料庫資料夾。
選取資料庫的讀取/寫入模式。
輸入密碼,然後按兩下 [確定] 以執行附加命令。
使用 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 的多維度資料庫和表格式資料庫。
在 [物件總管] 中,以滑鼠右鍵按兩下資料庫,然後選取 [屬性]
。 請注意位置。 空的資料庫儲存位置表示資料庫資料夾位於伺服器資料資料資料夾中。
以滑鼠右鍵按兩下資料庫,然後選取 [卸離...
在 Management Studio 中開啟新的 XMLA 索引標籤。
複製 XMLA 的下列文稿樣本:
<Detach xmlns="http://schemas.microsoft.com/analysisservices/2003/engine"> <Object> <DatabaseID>%dbName%</DatabaseID> <Password>%password%</Password> </Object> </Detach>
將
%dbName%
取代為資料庫名稱,並以密碼%password%
。 % 字元是範本的一部分,必須移除。執行 XMLA 命令。
在新的 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>
將
%dbFolder%
取代為資料庫資料夾的完整 UNC 路徑,%ReadOnlyMode%
以對應的值 ReadOnly 或 ReadWrite,並以密碼%password%
。 % 字元是範本的一部分,必須移除。執行 XMLA 命令。
另請參閱
Analysis Services 中的高可用性和延展性
附加和卸離 Analysis Services 資料庫
資料庫儲存位置
Database ReadWriteModes
Attach 元素
Detach 元素
ReadWriteMode 元素
DbStorageLocation 元素