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.
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;
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.
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.
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.