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) desejar alterar o modo de leitura/gravação de um banco de dados tabular ou multidimensional. Essas situações frequentemente são conduzidas pelas necessidades comerciais, como compartilhar o banco de dados em um pool de servidores do Analysis Services para melhorar a 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
Localize o banco de dados a ser alternado no painel esquerdo ou direito do Management Studio.
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 já não pode lhe ajudar a obter o local do banco de dados.
Clique com o botão direito do mouse no banco de dados e selecione Desanexar....
Atribua uma senha ao banco de dados a ser desanexado e clique em OK para executar o comando Desanexar.
Localize a pasta Bancos de Dados no painel esquerdo ou direito do Management Studio.
Clique com o botão direito do mouse na pasta Bancos de Dados e selecione Anexar...
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.
Selecione o modo leitura/gravação do banco de dados.
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);
}
}
Em seu aplicativo C#, chame SwitchReadWrite() com os parâmetros necessários.
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
Localize o banco de dados a ser alternado no painel esquerdo ou direito do Management Studio.
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 já não pode lhe ajudar a obter o local do banco de dados.
Abra uma nova guia XMLA em Management Studio.
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>
Substitua %dbName% pelo nome do banco de dados e %password% pela senha. Os caracteres % fazem parte do modelo e devem ser removidos.
Execute o comando XMLA.
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>
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.
Execute o comando XMLA.
Consulte também
Referência
Attach
Conceitos
Anexar e desanexar bancos de dados do Analysis Services