terça-feira, 27 de setembro de 2011

Habilitando 'Instant File Initialization' em um servidor SQL Server 2005/2008

Talvez já tenham percebido o tempo que normalmente o SQL Server demora ao criar um banco, alterar seu tamanho ou restaurar uma base.
Hoje, ao ter que restaurar uma base de 560 GB, recordei que demoraria um pouco até começar a receber as mensagens de progresso da minha tarefa. Sabem porque? Os arquivos tem que ser inicializados (preenchidos com 'zeros').

Então me lembrei de um recurso, que ainda não tinha usado: 'Instant File Initialization', que permite que esses arquivos sejam instantaneamente criados sem a necessidade de preencher o mesmo com zeros. Isso trata-se de um privilégio de sistema operacional, não exatamente do SQL Server.
Para ativar esse recurso, você terá que atribuí-lo à conta de serviço que foi utilizada para executar a sua instância do SQL Server. Sempre é recomendado que seja uma conta com o mínimo possível de privilégios. Mesmo sabendo que o Administrador da máquina já tem esse direito, essa não é a conta mais adequada para executar os serviços relacionados ao SQL Server (nem qualquer outro!).

Um pequeno passo-a-passo:
  • Abra o console de Diretivas de Seguraça Local (Local Security Policy)
  • Em Security Settings, Local Policies, User Rights Assignment, selecione Perform Volume Maintenance Tasks
  • Abra o diálogo com um duplo clique e adicione a conta de serviço do SQL Server e clique OK
  • Feche o console
  • Reinicie sua instância do SQL Server
Bom, o resultado é que meu restore, de 560 GB, levou apenas 52 minutos e eu achei muito bom!

Para quem quiser saber mais, seguem uns bons links a seguir :

How and Why to Enable Instant File Initialization (SQL Server Premier Field Engineer Blog)
Database File Initialization (BOL)
Misconceptions around instant file initialization (Paul S. Randal)
Instant Initialization - What, Why and How? (Kimberly L. Tripp) - Nesse tem umas métricas interessantes

quinta-feira, 22 de setembro de 2011

Erro na aba Settings, do GP Management Console

Vim postar uma pequena dica para quem usa o Group Policy Management Console.

Ao acessar a aba Settings (Configurações) de algumas diretivas, recebia a seguinte mensagem de erro:

An error occurred while generating report:
An unknown error occurred while the HTML report was being created.
Para resolver, foi necessário editar o seguinte arquivo:

C:\WINDOWS\SYSVOL\sysvol\domain\Policies\{guid}\user\Microsoft\ieak\install.ins,

onde {guid} é o Unique ID da GPO.
Onde for encontrado:
[Security Imports]
ImportSecZones=1
Altere para zero e salve o arquivo.
Faça um refresh no console e já será possível ver as configurações da GPO novamente.


sexta-feira, 9 de setembro de 2011

Instalando CentOS 5 no Hyper-V

Segue um guia que eu compilei, juntando uma série de referências para instalar o CentOS 5.x com o Integration Components 2.1, da Microsoft, em uma máquina virtual num servidor Hyper-V:


  • Prepare uma máquina virtual com memória e discos dos tamanhos desejados
  • Remova o Network Adapter e adicione um Legacy Network Adapter
  • Defina um MAC Address estático para este adaptador (se for utilizar Live Migration)
  • Defina a imagem ou a mídia para a instalação do sistema operacional
  • Adicione o grupo de programas “Development Tools” durante a instalação. Caso tenha esquecido, utilize o comando ‘yum groupinstall “Development Tools”
  • Certifique-se de ter instalados os seguintes pacotes:
    • kernel-devel
    • gcc
    • make
    • adjtimex (se for 64-bit)
  • Adicione o repositório RPMforge (http://packages.sw.be/):
  • Instale o pacote dkms:
    # yum install dkms
  • Com o dkms instalado, precisaremos baixar o ISO do Integration Services 2.1 do site da MS e carregar na máquina virtual:
    # mkdir -p /mnt/cdrom
    # mount /dev/cdrom /mnt/cdrom
    # cp –rp /mnt/cdrom /usr/src/linuxic-2.1
    # umount /mnt/cdrom
    # cp /usr/src/linuxic-2.1/scripts/dkms.conf /usr/src/linuxic-2.1/
  • Edite o arquivo /etc/modprobe.conf para carregar os módulos do Integration Services. Adicione as seguintes linhas:
    alias scsi_hostadapter1 vmbus
    alias scsi_hostadapter2 blkvsc
    alias scsi_hostadapter3 storvsc
    alias scsi_hostadapter4 netvsc
  • Compile e instale o Integration Services:
    # dkms add -m linuxic -v 2.1
    # dkms build -m linuxic -v 2.1
    # dkms install --force -m linuxic -v 2.1
  • Desligue a máquina virtual.
  • Com a máquina virtual desligada, podemos remover o Legacy Network Adapter e adicionar um Network Adapter. Se for usar Live Migration, lembre-se de adicionar um MAC Address estático.
  • Pode adicionar, caso necessite, até 4 processadores virtuais.
  • Ejete o ISO do Integration Components
  • Quando for configurar sua nova interface de rede na máquina virtual, agora estará disponível uma seth0 (e não uma eth0). Se não reconhecer de início a nova interface, um novo boot poderá resolver esta questão. Pode remover o arquivo /etc/sysconfig/network-scripts/ifcfg-eth0.bak
Para mais informações: