當 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 元素