Compartilhar via


Alternar um banco de dados do Analysis Services entre os modos ReadOnly e ReadWrite

Geralmente, há situações em que um administrador de banco de dados do Analysis Services (dba) deseja alterar o modo de leitura/gravação de um banco de dados tabular ou multidimensional. Essas situações geralmente são orientadas por necessidades comerciais, como compartilhar o banco de dados entre um pool de servidores do Analysis Services para uma melhor experiência do usuário.

Um modo de banco de dados pode ser alternado de várias maneiras. Este documento explica os seguintes cenários comuns:

  • Interativamente usando o SQL Server Management Studio

  • Programaticamente usando AMO

  • Por script usando XMLA

Procedimentos

Para alternar o modo de leitura/gravação de um banco de dados interativamente usando o Management Studio

  1. Encontre o banco de dados a ser alternado no painel esquerdo ou direito do Management Studio.

  2. Clique com o botão direito do mouse no banco de dados e selecione Propriedades. Localize a pasta do banco de dados e anote o local. Um local de armazenamento de banco de dados vazio indica que a pasta de banco de dados está localizada na pasta de dados do servidor.

    Importante

    Assim que o banco de dados for desanexado, o Management Studio não poderá mais ajudá-lo a obter o local do banco de dados.

  3. Clique com o botão direito do mouse no banco de dados e selecione Desanexar...

  4. Atribua uma senha ao banco de dados a ser desanexado e clique em OK para executar o comando de desanexar.

  5. Localize a pasta Bancos de Dados no painel esquerdo ou direito do Management Studio.

  6. Clique com o botão direito do mouse na pasta Bancos de Dados e selecione Anexar...

  7. Na caixa de texto da pasta, digite o local original da pasta do banco de dados. Como alternativa, você pode usar o botão procurar (...) para localizar a pasta de banco de dados.

  8. Selecione o modo de leitura/gravação do banco de dados.

  9. Digite a senha usada na etapa 3 e clique em OK para executar o comando de anexação.

Para alternar o modo de leitura/gravação para um banco de dados programaticamente usando AMO

  1. Em seu aplicativo C#, adapte o código de exemplo a seguir e conclua as tarefas indicadas.

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. Em seu aplicativo C#, invoque SwitchReadWrite() com os parâmetros necessários.

  2. Compile e execute seu código para mover o banco de dados.

Para alternar o modo de leitura/gravação de um banco de dados por meio de script usando XMLA

  1. Localize o banco de dados que será trocado no painel esquerdo ou direito do Management Studio.

  2. Clique com o botão direito do mouse no banco de dados e selecione Propriedades. Localize a pasta do banco de dados e anote o local. Um local de armazenamento de banco de dados vazio indica que a pasta de banco de dados está localizada na pasta de dados do servidor.

    Importante

    Assim que o banco de dados for desanexado, o Management Studio não poderá mais ajudá-lo a obter o local do banco de dados.

  3. Abra uma nova guia XMLA no Management Studio.

  4. Copie o seguinte modelo de script para XMLA:

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

<Object>

<DatabaseID>%dbName%</DatabaseID>

<Password>%password%</Password>

</Object>

</Detach>

  1. Substitua %dbName% pelo nome do banco de dados e %password% pela senha. Os caracteres % fazem parte do modelo e devem ser removidos.

  2. Execute o comando XMLA.

  3. Copiar o modelo de script a seguir para XMLA em uma nova aba 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. Substitua %dbFolder% pelo caminho UNC completo da pasta de banco de dados, %ReadOnlyMode% pelo valor ReadOnly correspondente ou ReadWritee %password% pela senha. Os caracteres % fazem parte do modelo e devem ser removidos.

  2. Execute o comando XMLA.

Consulte Também

Attach*
Microsoft.AnalysisServices.Database.Detach*
Anexar e desanexar bancos de dados do Analysis Services
Local de armazenamento do banco de dados
Modos de Leitura/Escrita do Banco de Dados
Anexar Elemento
Desanexar Elemento
Elemento ReadWriteMode
Elemento DbStorageLocation