SQL Server x Data Protection Manager 2012 – The VSS application writer or the VSS provider is in a bad state. (ID 30111)

Estava utilizando o System Center Data Protection Manager 2012 para realizar os backup de alguns bancos de dados de um servidor.

Tudo ia bem, mas ao tentar restaurar os backups diretamente em uma outra instância do SQL Server apresentava a seguinte mensagem de erro:

“The VSS application writer or the VSS provider is in a bad state. Either it was already in a bad state or it entered a bad state during the current operation. (ID 30111”

A mensagem não ajuda muito, pois aponta como se houvesse algo errado com o VSS writer, o que logo ficou provado não ser verdade.

Após alguma pesquisa, onde vi que esse erro acontecia em uma séria de situações, descobri que no meu caso o problema era relativo a bancos de dados com múltiplas (no meu caso duas) barras invertidas (\\) no endereço dos arquivos dos bancos de dados, como menciona esse artigo.

Você pode verificar se isso ocorre em seu ambiente realizando o seguinte comando (na GUI o SQL Server omite as barras duplicadas):

select physical_name from sys.master_Files

e/ou

select filename from sysaltfiles

Após descobrir isso vi que não havia nenhuma maneira documentada de resolver o problema, mas como havia lidado com outro problema que me obrigou a iniciar o SQL Server em modo mono usuário e trabalhar com tabelas de sistema, imaginei uma possível solução.

Antes de explicar a solução gostaria de deixar bem claro que esse é um procedimento ARRISCADO e que NÃO deve ser feito a não ser que você tenha noção dos impactos que uma alteração dessa pode causar!

Resumindo, NÃO FAÇA ISSO se não souber o que está fazendo!

A ideia básica é alterar os dados nas tabelas de sistema do SQL Server, corrigindo a duplicidade das barras. O problema é que, a priori, o SQL Server 2005 em diante NÃO permite updates em tabelas de sistema.

O que muita gente não sabe (e isso termina sendo algo bom) é que há formas de realizar isso.

Segue o procedimento que realizei:

1) STOP SQL Server

2) subir o SQL Server com os parâmetros de inicialização:

a) -m – iniciar o SQL Server em modo single user

b) -c – não iniciar o SQL Server como serviço

c) -T3608 – Trace flag que faz com que o SQL Server inicie sem subir nenhum dos bancos a não ser o MASTER

Isso pode ser feito via interface gráfica pelo SQL Server Configuration Manager (SSCM) ou através de linha de comando

start sqlservr.exe -c -m -T3608 -s INSTANCIA (s minúsculo!!)

3) Conectar no SQL Server, via SQLCMD, já que vinha GUI você provavelmente precisaria de mais de uma conexão (há como realizar apenas uma, mas no SQLCMD é mais fácil)

sqlcmd -dmaster -A -U USUARIO -P senha -S SERVIDOR\INSTANCIA (S maiúsculo!!)

Vale lembrar que estamos utilizando o parâmetro -A, ou seja, estamos realizando uma conexão DAC, o que exige que esse recurso tenha sido ativado utilizando sp_configure.

4) Após conectado, execute os comandos:

USE MASTER
GO

select physical_name from sys.master_Files where database_id > 4 (preferi evitar os bancos de sistema, só por garantia)

update sys.master_files set physical_name = replace(physical_name,’\\’,’\’) where database_id > 4

select physical_name from sys.master_Files where database_id > 4

select filename from sysaltfiles (só por garantia, para conferir)

O interessante disso tudo é que nem foi preciso habilitar o allow updates na instância

/*
sp_configure ‘allow updates’, 1
GO
RECONFIGURE WITH OVERRIDE
GO
*/

Com isso removi as barras invertidas duplas do nome dos arquivos e os restores passaram a funcionam normalmente!

Esse post foi publicado em Artigos, System Center, Virtual PASS BR. Bookmark o link permanente.

Uma resposta para SQL Server x Data Protection Manager 2012 – The VSS application writer or the VSS provider is in a bad state. (ID 30111)

  1. Pingback: SQL Server x Data Protection Manager 2012 – The VSS application writer or the VSS provider is in a bad state. (ID 30111) – Situação 2 | Vladimir M. B. Magalhães – Learn and Share

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s