Meu ambiente é o seguinte: VMWare 5.5 servidor vitalizado MS Windows Server 2008R2 Enterprise domain e SQL Server 2008 R2 Enterprise . Armazenamento centralizado com conexão Fibre Channel.
Eu tenho partições no meu arquivo SQL Server DB
. Eu tenho 2 file groups
: um com dados ao vivo (FG1) , segundo com dados históricos (HDG) .
O segundo grupo de arquivos é read-only
. A cada mês, faço movimentos nas partições - adiciono novos dados (do mês anterior) aos dados históricos. Este processo é automático .
Mudamos nosso banco de dados para um novo servidor. Inicialmente, tive que fazer o processo manualmente . Durante esta operação meu espelho quebra (após a operação 3 - veja o fluxo do processo abaixo) com o seguinte erro:
NO SERVIDOR PRINCIPAL:
LINHA 0 em LOG:
Date 15.6.2015 20:54:11
Log SQL Server (Current - 16.6.2015 07:55:00)
Source spid84
Message
Setting database option MULTI_USER to ON for database MYDB.
LINHA 1 no LOG:
Date 15.6.2015 20:54:11
Log SQL Server (Current - 16.6.2015 07:55:00)
Source spid18s
Message
Error: 1453, Severity: 16, State: 1.
LINHA 2 no LOG:
Date 15.6.2015 20:54:11
Log SQL Server (Current - 16.6.2015 07:55:00)
Source spid18s
Message
'TCP://10.201.27.154:5022', the remote mirroring partner for database 'MYDB', encountered error 823, status 3, severity 24. Database mirroring has been suspended. Resolve the error on the remote server and resume mirroring, or remove mirroring and re-establish the mirror server instance.
OBSERVAÇÃO: executei esta operação no servidor antigo muitas vezes automaticamente e nunca tive esse erro.
NO SERVIDOR ESPELHO:
LINHA 1 no LOG:
Date 15.6.2015 20:54:11
Log SQL Server (Archive #3 - 15.6.2015 21:33:00)
Source spid17s
Message
Error: 823, Severity: 24, State: 3.
LINHA 2 no LOG:
Date 15.6.2015 20:54:11
Log SQL Server (Archive #3 - 15.6.2015 21:33:00)
Source spid17s
Message
The operating system returned error 5(Access is denied.) to SQL Server during a write at offset 0000000000000000 in file 'e:\Databases\MYDB_HISTRICAL.ndf'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe system-level error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.
MEU PROCESSO É O SEGUINTE:
1. Faço vários backups do Banco de Dados (Full, File Group e TLog backups).
2. Eu defino DB para RESTRICTED_USER
(para permitir a remoção somente leitura do sinalizador de grupo de arquivo histórico por script).
2a. Eu removo READ-ONLY
a bandeira do meu grupo de arquivos históricos.
3. Eu defino DB para MULTI_USER
permitir a operação normal do nosso software.
4. Eu atualizo as partições para que os dados sejam movidos para o grupo de arquivos históricos.
5. Repito as etapas 2 , 2a e 3 em para poder definir o grupo de arquivos históricos SOMENTE LEITURA novamente.
6. Faço backups novamente.
Alguém tem ideia de por que recebo esse erro?
EDIT: Recebemos o mesmo problema durante as diferentes fases do procedimento. Esta é a única situação em que o espelho quebra, então suponho que o problema esteja dentro do procedimento, mas não consigo descobrir o porquê!
Encontramos o problema. É um bug no SQL Server. Quando definimos
READ_WRITE
o comando não é transferido corretamente para omirror
banco de dados. Ocorreu um erro ao iniciar a alteração do scriptpartitions
no servidor espelho. Depois disso, a sincronização é arruinada e o DB no espelho é bloqueado (nosuspended
estado).Corrigimos o problema atualizando o SQL Server para a versão mais recente (nossa versão inicial era sem SP).