共用方式為


在 ReadOnly 和 ReadWrite 模式之間切換 Analysis Services 資料庫

當 Analysis Services 資料庫管理員 (dba) 想要變更表格式或多維度資料庫的讀取/寫入模式時,通常會有這種情況。 這些情況通常是由業務需求所驅動,例如在 Analysis Services 伺服器集區之間共享資料庫,以取得更佳的用戶體驗。

您可以透過多種方式切換資料庫模式。 本文件說明下列常見案例:

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

  • 以程序設計方式使用 AMO

  • 使用 XMLA 編寫文本

程序

使用Management Studio以互動方式切換資料庫的讀取/寫入模式

  1. 在Management Studio的左窗格或右窗格中,找出要切換的資料庫。

  2. 以滑鼠右鍵按兩下資料庫,然後選取 [ 屬性]。 尋找資料庫資料夾並記下位置。 空的資料庫儲存位置表示資料庫資料夾位於伺服器資料資料資料夾中。

    重要

    一旦卸離資料庫,Management Studio 就無法再協助您取得資料庫位置。

  3. 以滑鼠右鍵按兩下資料庫,然後選取 [ 中斷連結...

  4. 將密碼指派給要卸離的資料庫,然後按兩下 [ 確定 ] 以執行卸離命令。

  5. 在 Management Studio 的左窗格或右窗格中,找出 [資料庫] 資料夾。

  6. 以滑鼠右鍵按兩下 [ 資料庫] 資料夾,然後選取 [ 附加...

  7. 在資料夾文字框中,輸入資料庫資料夾的原始位置。 或者,您可以使用瀏覽按鈕 (...) 來尋找資料庫資料夾。

  8. 選取資料庫的讀取/寫入模式。

  9. 輸入步驟 3 中使用的密碼,然後按下 [ 確定 ] 以執行附加命令。

若要使用 AMO 以程式設計方式將讀取/寫入模式切換至資料庫

  1. 在您的 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);

}

}

  1. 在您的 C# 應用程式中,使用必要的參數叫 SwitchReadWrite() 用 。

  2. 編譯並執行程式代碼以移動資料庫。

使用 XMLA 文稿將讀取/寫入模式切換至資料庫

  1. 在Management Studio的左窗格或右窗格中,找出要切換的資料庫。

  2. 以滑鼠右鍵按兩下資料庫,然後選取 [ 屬性]。 尋找資料庫資料夾並記下位置。 空的資料庫儲存位置表示資料庫資料夾位於伺服器資料資料資料夾中。

    重要

    一旦卸離資料庫,Management Studio 就無法再協助您取得資料庫位置。

  3. 在 Management Studio 中開啟新的 XMLA 索引標籤。

  4. 複製 XMLA 的下列文稿樣本:

<Detach xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">

<Object>

<DatabaseID>%dbName%</DatabaseID>

<Password>%password%</Password>

</Object>

</Detach>

  1. 將 取代為資料庫的名稱,並將 %password% 取代%dbName%為密碼。 % 字元是範本的一部分,必須移除。

  2. 執行 XMLA 命令。

  3. 在新的 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>

  1. %dbFolder%取代資料庫資料夾的完整 UNC 路徑、%ReadOnlyMode%對應的值 ReadOnlyReadWrite,並以%password%密碼取代 。 % 字元是範本的一部分,必須移除。

  2. 執行 XMLA 命令。

另請參閱

Attach*
Microsoft.AnalysisServices.Database.Detach*
附加和卸離 Analysis Services 資料庫
資料庫儲存位置
Database ReadWriteModes
Attach 元素
Detach 元素
ReadWriteMode 元素
DbStorageLocation 元素