在 ReadOnly 和 ReadWrite 模式之間切換 Analysis Services 資料庫
通常在很多情況下,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()()()()