Posts Tagged ‘RECONFIGURE’

Configurar instância SQL via script

Posted in Dicas, SQL SERVER 2000, SQL SERVER 2005, SQL SERVER 2008, SQL SERVER 2008 R2 on January 18th, 2010 by Silas Mendes – 2 Comments

Existem diferentes formas de configurar uma instância SQL Server, uma delas é através da procedure sp_configure. O interessante de utilizar a sp_configure é que o DBA não fica dependente da utilização de uma interface gráfica.

Ao executar a sp_configure sem parâmetros, são exibidas as configurações atuais da instância. Cada registro representa uma configuração e no campo run_value é possível visualizar o valor atual de cada configuração.

01_sp_configure

Num cenário padrão ao executar a sp_configure o resultado só exibe algumas das inúmeras opções de configuração; isso porque por padrão o SQL Server oculta opções avançadas. Para exibir todas as opções você deve executar:

USE master
GO
EXEC sp_configure 'show advanced option', '1';
GO
RECONFIGURE;
Veja que no comando acima é possível ter uma idéia da sintaxe desta procedure. A idéia básica é a seguinte:
EXEC sp_configure ‘nome da configuração’, ‘novo valor da configuração’

Uma das configurações que podemos alterar utilizando a sp_configure é o limite de memória utilizada pelo SQL Server, vamos exemplificar a alteração desta configuração:

Atualmente minha instância está configurada para utilizar no máximo 500 MB de memória. Ao executar o comando sp_configure é possivel verificar que a opção max server memory (MB) está com o valor 500 nos campos config_value e run_value.

02_sp_configure

Para alterar a quantidade máxima de memória que a minha instância poderá utilizar executo o seguinte comando:

EXEC sp_configure 'max server memory (MB)', '300';

No comando acima configurei o máximo de memória disponível para a instância para 300 MB, no entanto se executarmos a sp_configure verificaremos que a opção run_value ainda continua com 500. Para efetivar a alteração preciso executar o comando RECONFIGURE; assim a alteração entrará em vigor.

RECONFIGURE

Figura 1 – Monitorando o contador Target Server Memory durante execução do RECONFIGURE.

É importante salientar que apesar do comando RECONFIGURE ser obrigatório, nem todas as configurações são efetivadas somente com a execução do RECONFIGURE, para estas opções a efetivação só ocorre com a reinicialização do serviço do SQL Server. Para verificar quais são estas opções basta consultar a tabela sys.configurations (disponível no SQL Server 2005/2008). As configurações que tiverem o campo is_dynamic igual a 0 (zero) só entrarão em vigor quando o serviço do SQL Server for reiniciado. Note que se o comando RECONFIGURE não for executado, mesmo que a instância seja reiniciada a nova configuração não entrará em vigor.

Outras configurações possíveis através da sp_configure: habilitar a procedure xp_cmdshell,  procedures do Database Mail,  código gerenciado (CLR), configurar o número de processadores utilizados pela instância (paralelismo), configurar memória extendida (AWE), etc.

  • RECONFIGURE ou RECONFIGURE WITH OVERRIDE?

Se ao alterar uma configuração o DBA definir um valor que foge às recomendações do SQL Server, ao executar a opção RECONFIGURE o SQL Server irá rejeitar a alteração e notificar o usuário. Por exemplo, na versão 2000 era possível realizar alterações nas tabelas de sistema do SQL Server (isso mudou um pouco nas versões 2005 e 2008), para isso bastava executar o comando:

EXEC sp_configure 'allow updates', '1'

No entanto, por razões óbvias esta não é uma prática recomendada, então nessas situações, ao executar somente o RECONFIGURE, o SQL Server exibia a seguinte mensagem:

Configuration option ‘allow updates’ changed from 1 to 1. Run the RECONFIGURE statement to install.

Msg 5808, Level 16, State 1, Line 1

Ad hoc updates to system catalogs not recommended. Use the RECONFIGURE WITH OVERRIDE statement to force this configuration.

Logo o DBA só poderia concretizar essa operação se utilizasse o RECONFIGURE WITH OVERRIDE, ou seja, esta é a forma do SQL Server se proteger contra ações indevidas e dizer ao DBA:  “amigo, isso é por sua conta e risco”. Portanto, o WITH OVERRIDE é uma opção a ser evitada e só é recomendada em situações pontuais.

  • Conclusão

Conhecer as diferentes formas de configurar uma instância SQL Server dá ao DBA maior liberdade no momento de realizar estas tarefas, neste caso, além das ferramentas gráficas o DBA também poderá utilizar a sp_configure no SQLCMD, OSQL ou agendar alterações de configurações através de jobs e etc.

Para ter acesso a todas as opções de configurações disponíveis na sp_configure, consulte a tabela sys.configurations ou acesse o Books Online.

Bom trabalho, bons estudos.