<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Diário de um DBA &#187; Target Server Memory</title>
	<atom:link href="http://silasmendes.com/dba/tag/target-server-memory/feed" rel="self" type="application/rss+xml" />
	<link>http://silasmendes.com/dba</link>
	<description>Tecnologia &#38; Banco de Dados</description>
	<lastBuildDate>Tue, 27 Dec 2011 12:53:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Configurar instância SQL via script</title>
		<link>http://silasmendes.com/dba/configurar-instancia-via-script</link>
		<comments>http://silasmendes.com/dba/configurar-instancia-via-script#comments</comments>
		<pubDate>Mon, 18 Jan 2010 13:35:58 +0000</pubDate>
		<dc:creator>Silas Mendes</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[SQL SERVER 2000]]></category>
		<category><![CDATA[SQL SERVER 2005]]></category>
		<category><![CDATA[SQL SERVER 2008]]></category>
		<category><![CDATA[SQL SERVER 2008 R2]]></category>
		<category><![CDATA[allow updates]]></category>
		<category><![CDATA[database mail]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[memória]]></category>
		<category><![CDATA[OVERRIDE]]></category>
		<category><![CDATA[RECONFIGURE]]></category>
		<category><![CDATA[sp_configure]]></category>
		<category><![CDATA[sql server 2000]]></category>
		<category><![CDATA[sql server 2005]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[sys.configurations]]></category>
		<category><![CDATA[Target Server Memory]]></category>
		<category><![CDATA[xp_cmdshell]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=486</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>Existem diferentes formas de configurar uma instância SQL Server, uma delas é através da procedure <strong>sp_configure</strong>. O interessante de utilizar a sp_configure é que o DBA não fica dependente da utilização de uma interface gráfica.</p>
<p>Ao executar a <strong>sp_configure</strong> sem parâmetros, são exibidas as configurações atuais da instância. Cada registro representa uma configuração e no campo <strong>run_value</strong> é possível visualizar o valor atual de cada configuração.</p>
<p><img class="aligncenter size-full wp-image-487" title="01_sp_configure" src="http://silasmendes.com/dba/wp-content/uploads/2010/01/01_sp_configure.PNG" alt="01_sp_configure" width="447" height="181" /></p>
<p>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:</p>
<pre class="brush: sql; title: ; notranslate">
USE master
GO
EXEC sp_configure 'show advanced option', '1';
GO
RECONFIGURE;
</pre>
<div>Veja que no comando acima é possível ter uma idéia da sintaxe desta procedure. A idéia básica é a seguinte:</div>
<pre class="brush: sql; title: ; notranslate">
EXEC sp_configure ‘nome da configuração’, ‘novo valor da configuração’
</pre>
<p>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:</p>
<p>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 <strong>max server memory (MB) </strong>está com o valor 500 nos campos <strong>config_value</strong> e <strong>run_value</strong>.</p>
<p><img class="aligncenter size-full wp-image-488" title="02_sp_configure" src="http://silasmendes.com/dba/wp-content/uploads/2010/01/02_sp_configure.PNG" alt="02_sp_configure" width="470" height="195" /></p>
<p>Para alterar a quantidade máxima de memória que a minha instância poderá utilizar executo o seguinte comando:</p>
<pre class="brush: sql; title: ; notranslate">
EXEC sp_configure 'max server memory (MB)', '300';
</pre>
<p>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.</p>
<p><img class="aligncenter size-full wp-image-489" title="RECONFIGURE" src="http://silasmendes.com/dba/wp-content/uploads/2010/01/RECONFIGURE.PNG" alt="RECONFIGURE" width="421" height="280" /></p>
<h5 style="text-align: center;"><span style="font-weight: normal;">Figura 1 – Monitorando o contador Target Server Memory durante execução do RECONFIGURE.</span></h5>
<p>É 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 <span style="color: #008000;">sys.configurations</span> (disponível no SQL Server 2005/2008). As configurações que tiverem o campo <strong>is_dynamic</strong> igual a 0 (zero) só entrarão em vigor quando o serviço do SQL Server for reiniciado. <strong>Note que se o comando RECONFIGURE <span style="text-decoration: underline;">não</span> for executado, mesmo que a instância seja reiniciada a nova configuração não entrará em vigor</strong>.</p>
<p>Outras configurações possíveis através da sp_configure: habilitar a procedure <strong>xp_cmdshell</strong>,  procedures do <strong>Database Mail</strong>,  código gerenciado (CLR), configurar o número de processadores utilizados pela instância (paralelismo), configurar memória extendida (AWE), etc.</p>
<ul>
<li><strong>RECONFIGURE ou RECONFIGURE WITH OVERRIDE?</strong></li>
</ul>
<p>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 <em>um pouco</em> nas versões 2005 e 2008), para isso bastava executar o comando:</p>
<pre class="brush: sql; title: ; notranslate">
EXEC sp_configure 'allow updates', '1'
</pre>
<p>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:</p>
<blockquote><p><span style="color: #ff0000;">Configuration option &#8216;allow updates&#8217; changed from 1 to 1. Run the RECONFIGURE statement to install.</span></p>
<p><span style="color: #ff0000;">Msg 5808, Level 16, State 1, Line 1</span></p>
<p><span style="color: #ff0000;">Ad hoc updates to system catalogs not recommended. Use the RECONFIGURE WITH OVERRIDE statement to force this configuration.</span></p></blockquote>
<p>Logo o DBA só poderia concretizar essa operação se utilizasse o RECONFIGURE <strong>WITH OVERRIDE</strong>, 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 <strong>WITH OVERRIDE</strong> é uma opção a ser evitada e só é recomendada em situações pontuais.</p>
<ul>
<li><strong>Conclusão</strong></li>
</ul>
<p>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.</p>
<p>Para ter acesso a todas as opções de configurações disponíveis na <strong>sp_configure</strong>, consulte a tabela <span style="color: #008000;">sys.configurations</span> ou acesse o <a href="http://msdn.microsoft.com/en-us/library/ms188787.aspx" target="_blank">Books Online</a>.</p>
<p>Bom trabalho, bons estudos.</p>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/configurar-instancia-via-script/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

