Analysis Services データベースの ReadOnly モードと ReadWrite モードの切り替え
適用対象:
SQL Server Analysis Services Azure Analysis Services
Power BI Premium
Analysis Servicesデータベース管理者は、クエリ ワークロードを複数のクエリ専用サーバーに分散する大規模な作業の一環として、表形式または多次元データベースの読み取り/書き込みモードを変更できます。
データベース モードを切り替える方法は複数あります。 このドキュメントでは、次の一般的なシナリオについて説明します。
対話形式で SQL Server Management Studio
AMO を使用したプログラム
XMLA または TMSL を使用したスクリプト
Management Studio を使用してデータベースの読み取り/書き込みモードを対話的に切り替える
このオブジェクト エクスプローラーデータベースを右クリックし、 [プロパティ] を選択します。
場所を書き留めます。 データベースのストレージの場所が空の場合は、データベース フォルダーがサーバー データ フォルダー内にあることを示しています。
データベースを右クリックし、[ デタッチ] を選択します。
デタッチするデータベースにパスワードを割り当て、 [OK] をクリックしてデタッチ コマンドを実行します。
このオブジェクト エクスプローラー Databases フォルダーを右クリックし、 [アタッチ] を選択します。
[フォルダー] ボックスに、データベース フォルダーの元の場所を入力します。 または、参照ボタン (...) を使用してデータベース フォルダーを見つける方法があります。
データベースの読み取り/書き込みモードを選択します。
パスワードを入力し、 [OK] をクリックしてアタッチ コマンドを実行します。
プログラムで 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 の多次元データベースと表形式データベースに適用されます。
このオブジェクト エクスプローラーデータベースを右クリックし、 [プロパティ] を選択します。
場所を書き留めます。 データベースのストレージの場所が空の場合は、データベース フォルダーがサーバー データ フォルダー内にあることを示しています。
データベースを右クリックし、[ デタッチ] を選択します。
新しい XMLA タブを開Management Studio。
次の 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デタッチ
データベースの格納場所
データベースの ReadWriteMode
Attach 要素
Detach 要素
ReadWriteMode 要素
DbStorageLocation 要素