Ao fazer uma restauração de um grande banco de dados de 1,8 TB em um servidor diferente, me deparei com esta mensagem de erro quando a restauração estava cerca de 90% concluída:
90 por cento processado.
Msg 3013, Nível 16, Estado 1, Linha 52
RESTORE DATABASE está sendo encerrado de forma anormal.
Msg 1204, Nível 19, Estado 4, Linha 52
A instância do Mecanismo de Banco de Dados SQL Server não pode obter um recurso LOCK neste momento. Execute novamente seu extrato quando houver menos usuários ativos. Peça ao administrador do banco de dados para verificar a configuração de bloqueio e memória desta instância ou para verificar transações de longa execução.
SELECT [instance]=@@servername,[setting name]=name, value, value_in_use, [description]
FROM sys.configurations
where name in ('min server memory (MB)',
'min memory per query (KB)',
'max server memory (MB)',
'optimize for ad hoc workloads')
SELECT [instance]=@@servername,
cpu_count AS [Logical CPU Count],
hyperthread_ratio AS [Hyperthread Ratio],
cpu_count/hyperthread_ratio AS [Physical CPU Count],
CONVERT(decimal(12,2),physical_memory_kb/1024.00/1024.00) AS [Physical Memory (GB)],
affinity_type_desc,
virtual_machine_type_desc,
sqlserver_start_time
FROM sys.dm_os_sys_info WITH (NOLOCK)
usando isso para verificar o log de erros do sql, não consegui encontrar nenhuma indicação clara da causa do problema acima.
EXEC xp_readerrorlog 1
isso é o que eu encontrei:
Using dynamic lock allocation. Initial allocation of 2500 Lock blocks and 5000 Lock Owner blocks per node. This is an informational message only. No user action is required.
Node configuration: node 0: CPU mask: 0x000000000000000f:0 Active CPU mask: 0x000000000000000f:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.
o que fazer para permitir que minhas restaurações funcionem perfeitamente e não parem no meio?
Lembro que tive um problema semelhante durante a restauração do banco de dados, no meu caso eram consultas de relatórios executadas a cada 15-20 minutos e consumiam dezenas de gigabytes de RAM para concessões de memória, bem como alguma memória extra para bloqueios. Isso pareceu criar pressão na memória e interromper a restauração do banco de dados.
A solução no meu caso foi desabilitar temporariamente a conta SQL usada pelas consultas de relatório, até que a restauração do banco de dados fosse concluída.
Para o seu caso, sugiro aumentar
max server memory
para um número maior ou impedir que usuários, aplicativos ou relatórios executem consultas pesadas durante a restauração.