Problema de CPU / máscara de afinidade no SQL 2005

2

Tendo um problema com um SQL Server que foi virtualizado a partir de uma máquina física. A máscara da CPU foi definida no SQL Server físico por algum motivo antes da virtualização e agora as opções avançadas não estão disponíveis na máquina, agora é um convidado da VMware. Portanto, preciso reconfigurar as configurações da máscara de afinidade da CPU - que são opções avançadas, portanto, isso é bloqueado por causa do problema da máscara de afinidade.

Eu tentei fazer isso com o SQL Server no modo de linha de comando de usuário único, pesquisei e encontrei muitas pessoas com problemas semelhantes, mas nenhuma solução real.

Exemplos de comandos e saída do analisador de consultas abaixo.

sp_configure 'show advanced options', 1 
GO
RECONFIGURE WITH OVERRIDE
GO
sp_configure 'affinity mask', 0x00000000
GO
RECONFIGURE 
GO

-----------------------------------------

Configuration option 'show advanced options' changed from 0 to 1. Run the RECONFIGURE statement to install.

Msg 5832, Level 16, State 1, Line 1

The affinity mask specified does not match the CPU mask on this system.

Msg 15123, Level 16, State 1, Procedure sp_configure, Line 51

The configuration option 'affinity mask' does not exist, or it may be an advanced option.
    
por Rob Moir 06.04.2010 / 11:46

2 respostas

1

Acho que a solução com suporte da Microsoft seria fazer backup dos bancos de dados, reinstalar o SQL Server e restaurar os bancos de dados para a nova instalação.

Se você quer tentar algo que não é suportado pelo MS, e pode ser perigoso, você pode tentar atualizar o banco de dados mestre através de uma consulta SQL. Eu não sei se recomendo isso, mas pode funcionar para você e salvar algumas dores de cabeça de reinstalação. Além disso, nunca fiz isso antes, então não posso garantir que funcione. As etapas são:

  1. Backup de seus bancos de dados
  2. Verifique se os backups de seu banco de dados são válidos
  3. Realmente, verifique se você tem bons backups de seus bancos de dados
  4. Pare seu SQL Server
  5. Inicie o SQL Server no Modo de usuário único (adicione a opção -m ao sqlserver. exe)
  6. Em um prompt de comando (administrativo), execute o seguinte no sqlcmd:

    sqlcmd -S ADMIN: servidor \ instância -d mestre -W -s "," -Q "SELECT Nome, Valor, Mínimo, Máximo, Valor_em_utilizar, is_dynamic, is_advanced de SYS.Configurations Onde Nome = 'máscara de afinidade'"

    é claro que substitua o server\instance antes de executar. Além disso, o ADMIN: no início do nome do servidor é importante - isso conecta você na conexão administrativa dedicada .

  7. Supondo que isso retorne o valor que você está esperando (o valor incorreto), você pode tentar atualizar a máscara de afinidade para 0. Faça isso com o comando:

    sqlcmd -S ADMIN: server \ instance -d master -W -s "," -Q "update sys.configurations set valor = 0 Onde Nome = 'máscara de afinidade'"

  8. Encerre o servidor no modo de usuário único.

  9. Inicie o SQL Server normalmente.
  10. Cruze os dedos.
por 07.04.2010 / 17:42
1

Tivemos esse problema exato em nossa loja. No nosso caso, tivemos uma caixa de SQL cpu de 4 cv que colocou em uma caixa de 2 cpu VMware SQL 2005. Depois que o SQL 2005 voltou on-line, ele foi pego na posição catch 22 que você descreveu acima. Conseguimos corrigir a situação alterando a caixa VMWare de volta para uma caixa de quatro vias (alteração simples com uma reinicialização rápida). No nosso caso, deixamos como uma caixa de 4 vias, mas poderíamos ter desativado a afinidade do processador ... reduzimos o tamanho a um bidirecional e restabelecemos a afinidade do processador.

Você pode consultar a tabela sys.configurations para determinar o valor decimal em que sua afinidade com o processador está realmente definida. Se você fizer a conversão de decimal para binário, poderá determinar como é a máscara de bits e provavelmente verá que ela está configurada para esperar mais processadores do que realmente possui.

    
por 25.08.2011 / 16:29