Compartilhar via


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

Freqüentemente, há situações quando um administrador de banco de dados Analysis Services (dba) quer alterar o modo leitura/gravação de um banco de dados. Essas situações freqüentemente são conduzidas pelas necessidades comerciais, como compartilhamento do banco de dados entre um pool de servidores Analysis Services para uma melhor experiência do usuário.

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

  • Usando o SQL Server Management Studio de modo interativo

  • Usando o AMO de maneira programática

  • Por script usando XMLA

Procedimentos

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

  1. Localize 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.

    Observação importanteImportante

    Assim que o banco de dados for desanexado, o Management Studio já não pode lhe ajudar 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 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 pasta, digite o local original da pasta do banco de dados. Opcionalmente, você pode usar o botão Navegar (.) para localizar a pasta do banco de dados.

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

  9. Digite a senha usada na etapa 3 e clique em OK para executar o comando Anexar.

Para alternar o modo leitura/gravação em um banco de dados usando o AMO de maneira programática

  • Em seu aplicativo C#, adapte o seguinte código de amostra 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#, chame SwitchReadWrite() com os parâmetros necessários.

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

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

  1. Localize 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.

    Observação importanteImportante

    Assim que o banco de dados for desanexado, o Management Studio já não pode lhe ajudar a obter o local do banco de dados.

  3. Abra uma nova guia XMLA em Management Studio.

  4. Copie o modelo de script a seguir 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 guia 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 do banco de dados, %ReadOnlyMode% pelo valor correspondente ReadOnly ou ReadWrite e %password% pela senha. Os caracteres % fazem parte do modelo e devem ser removidos.

  2. Execute o comando XMLA.