<?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; Backup</title>
	<atom:link href="http://silasmendes.com/dba/tag/backup/feed" rel="self" type="application/rss+xml" />
	<link>http://silasmendes.com/dba</link>
	<description>Tecnologia &#38; Banco de Dados</description>
	<lastBuildDate>Sun, 15 Apr 2012 12:20:16 +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>Backup FULL reinicia sequência do LOG. Mito?</title>
		<link>http://silasmendes.com/dba/mito-backup-full-e-log</link>
		<comments>http://silasmendes.com/dba/mito-backup-full-e-log#comments</comments>
		<pubDate>Sat, 30 Apr 2011 15:50:46 +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[Backup]]></category>
		<category><![CDATA[copy_only]]></category>
		<category><![CDATA[internals]]></category>
		<category><![CDATA[LSN]]></category>
		<category><![CDATA[mito]]></category>
		<category><![CDATA[Restore]]></category>
		<category><![CDATA[Sql Server]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=905</guid>
		<description><![CDATA[Olá, No mês de Abril fiz o curso de SQL Server Internals com o Luciano Moreira, mais conhecido na comunidade como Luti; não vou me estender muito neste assunto, mas se você é um DBA SQL Server, recomendo fortemente que &#8230; <a href="http://silasmendes.com/dba/mito-backup-full-e-log">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Olá,</p>
<p>No mês de Abril fiz o curso de SQL Server Internals com o <a href="http://luticm.blogspot.com/" target="_blank">Luciano Moreira</a>, mais conhecido na comunidade como Luti; não vou me estender muito neste assunto, mas se você é um DBA SQL Server, recomendo fortemente que faça este curso. Excelente&#8230;</p>
<p>Mas vamos ao foco do nosso post. Durante o curso de <em>internals </em>alguns mitos foram por água abaixo; um deles foi  “Ao realizar um backup full, perdemos a sequência do log”.</p>
<p>Verdade? Sim ou Não?</p>
<p>Bom, confesso que eu sempre tive isso como verdade absoluta e tenho certeza que outros inúmeros DBAs SQL Server pensam o mesmo; mas a verdade é que <strong>não</strong>, realizar um backup full não quebra a sequência do seu log. Mas falando assim não tem graça né, vamos testar a brincadeira:</p>
<p>Primeiro criamos um banco para nosso teste (<em>no fim do post está o script completo do nosso teste</em>):</p>
<pre class="brush: sql; title: ; notranslate">
CREATE DATABASE testeBackup
</pre>
<p>Por padrão o SQL Server criar o banco com o <em>recovery model</em> <strong>FULL</strong> (exceto na edição <em>Express</em>). Isto é importante para o nosso teste já que iremos realizar backup do log. Para confirmar:</p>
<pre class="brush: sql; title: ; notranslate">
-- Recovery Model = FULL
SELECT recovery_model_desc
FROM sys.databases
WHERE NAME LIKE 'testeBackup'
</pre>
<p>Vamos criar uma tabela para nossos testes e realizar nosso primeiro backup FULL:</p>
<pre class="brush: sql; title: ; notranslate">
USE testeBackup

-- Cria tabela
CREATE TABLE registroBackup
	(id INT IDENTITY,
	registro VARCHAR(50))

-- Realiza backup FULL
BACKUP DATABASE testeBackup
TO DISK = 'C:\testeBackupFULL.bak' WITH INIT
</pre>
<p>Agora utilizando uma estrutura de repetição inserimos 1 registro na tabela e realizamos um backup de log. Isso repetirá por 5 vezes:</p>
<pre class="brush: sql; title: ; notranslate">
DECLARE @i INT

SET @i = 1

WHILE @i &lt;= 5
BEGIN
	-- Insere registro
	INSERT INTO registroBackup
	VALUES ('Antes do '+CAST(@i AS VARCHAR(2))+'º backup de LOG')
	-- Realiza backup de log
	BACKUP LOG testeBackup
	TO DISK = 'C:\testeBackupLOG.bak'
	WITH NOINIT
	-- Incrementa contador
	SET @i = @i + 1
END
</pre>
<p>Verificamos então os registros inseridos na tabela:</p>
<pre class="brush: sql; title: ; notranslate">
SELECT * FROM registroBackup
</pre>
<p><strong>Resultado:</strong><br />
<a href="http://silasmendes.com/dba/wp-content/uploads/2011/04/01_post_backup.png"><img class="aligncenter size-full wp-image-908" title="01_post_backup" src="http://silasmendes.com/dba/wp-content/uploads/2011/04/01_post_backup.png" alt="" width="218" height="148" /></a></p>
<p>E verificamos os nossos backups de log:</p>
<pre class="brush: sql; title: ; notranslate">
RESTORE HEADERONLY FROM DISK = 'C:\testeBackupLOG.bak'
</pre>
<p><strong>Resultado:</strong><br />
<a href="http://silasmendes.com/dba/wp-content/uploads/2011/04/02_post_backup.png"><img class="aligncenter size-medium wp-image-911" title="02_post_backup" src="http://silasmendes.com/dba/wp-content/uploads/2011/04/02_post_backup-300x69.png" alt="" width="300" height="69" /></a></p>
<p>Como verificamos temos aí 5 registros e 5 backups de log.</p>
<p>Agora realizamos um novo backup FULL:</p>
<pre class="brush: sql; title: ; notranslate">
BACKUP DATABASE testeBackup
TO DISK = 'C:\testeBackupFULL_2.bak' WITH INIT
</pre>
<p>E repetimos a execução do laço:</p>
<pre class="brush: sql; title: ; notranslate">
DECLARE @i INT

SET @i = 6

WHILE @i &lt;= 10
BEGIN
	-- Insere registro
	INSERT INTO registroBackup
	VALUES ('Antes do '+CAST(@i AS VARCHAR(2))+'º backup de LOG')

-- Realiza backup de log
	BACKUP LOG testeBackup
	TO DISK = 'C:\testeBackupLOG.bak'
	WITH NOINIT

-- Incrementa contador
	SET @i = @i + 1
END
</pre>
<p>Ao fim temos 10 registros em nossa tabela, 10 backups de LOG e 2 backups FULL.</p>
<p>Agora entra a figura do estagiário que exclui o segundo arquivo de backup FULL&#8230; (sacanagem, rss)</p>
<p>Segundo a lenda, isso inválida todos os backups de log posteriores e teríamos que realizar um backup FULL imediatamente, porque ao realizar o segundo backup FULL perderíamos a seqüência do log.  Certo? Bom&#8230; vamos testar:</p>
<p>Excluímos  a base de dados:</p>
<pre class="brush: sql; title: ; notranslate">
USE MASTER
GO
DROP DATABASE testeBackup
</pre>
<p>E restauramos os backups (FULL + LOGs) <strong>ignorando o segundo backup FULL</strong>:</p>
<pre class="brush: sql; title: ; notranslate">
RESTORE DATABASE testeBackup
FROM DISK = 'C:\testeBackupFULL.bak' -- primeiro backup FULL
WITH NORECOVERY

-- Restauramos os 10 arquivos de log

DECLARE @i INT
SET @i = 1

WHILE @i &lt;= 10
BEGIN

	RESTORE LOG testeBackup
	FROM DISK = 'C:\testeBackupLOG.bak'
	WITH FILE = @i, NORECOVERY

	SET @i = @i + 1

END

	RESTORE DATABASE testeBackup
	WITH RECOVERY -- colocamos a base em operação
</pre>
<p>Verifique que restauramos os 10 registros de nossa tabela:</p>
<pre class="brush: sql; title: ; notranslate">
USE testeBackup
SELECT COUNT(*) FROM registroBackup
</pre>
<p><strong>Resultado:</strong><br />
<a href="http://silasmendes.com/dba/wp-content/uploads/2011/04/03_post_backup.png"><img class="aligncenter size-full wp-image-912" title="03_post_backup" src="http://silasmendes.com/dba/wp-content/uploads/2011/04/03_post_backup.png" alt="" width="142" height="45" /></a></p>
<p>Enfim, note que a realização do 2º backup FULL não quebrou a seqüência dos nossos backups de log!</p>
<p>Agora a pergunta que não quer calar: qual a função do parâmetro de backup <strong>COPY_ONLY</strong> lançado a partir do SQL Server 2005?!</p>
<p>Um backup diferencial tem <strong>total dependência do último backup FULL</strong>; logo, se você perder o backup FULL anterior, não será possível restaurar o diferencial, mesmo com um FULL mais antigo. Então pense numa situação que você precise de um backup FULL adicional, mas não deseja que ele afete seus próximos backups diferenciais (que deverão continuar utilizando como referência o backup FULL anterior), então aqui utilizaríamos o <strong>COPY_ONLY</strong>.</p>
<p>Resumindo: Os backups diferenciais posteriores iram ignorar um backup FULL com COPY_ONLY.</p>
<p><strong>CONCLUSÃO</strong></p>
<p>Backup FULL não altera a sequência dos backups de LOG. Se você perdeu seu último backup FULL, mas tem um do mês passado e de lá pra cá todos os seus backups de LOG estão intactos, não se desespere! Você conseguirá restaurar seu backup.</p>
<p>PS: Obrigado <a href="http://luticm.blogspot.com/" target="_blank">Luti </a>pela super dica :D</p>
<p><strong>Disponibilizei o script completo deste teste <a href="http://dl.dropbox.com/u/27222507/DiarioDBA/Script_POST_mito-backup-full-e-log.sql" target="_blank">aqui</a>.</strong></p>
<p>Até +</p>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/mito-backup-full-e-log/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Backup compactado</title>
		<link>http://silasmendes.com/dba/backup-compactado</link>
		<comments>http://silasmendes.com/dba/backup-compactado#comments</comments>
		<pubDate>Tue, 14 Sep 2010 14:47:42 +0000</pubDate>
		<dc:creator>Silas Mendes</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Vida Real]]></category>
		<category><![CDATA[adventureWorks]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[compactar]]></category>
		<category><![CDATA[comprimir]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[sp_configure]]></category>
		<category><![CDATA[sql backup]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=677</guid>
		<description><![CDATA[A compressão de backups sempre foi um dilema para quem lida com grandes bases de dados no SQL Server. Muitos DBAs criaram rotinas para compactar arquivos de backup utilizando o bom e velho RAR, outros utilizavam soluções mais interessantes como &#8230; <a href="http://silasmendes.com/dba/backup-compactado">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A compressão de backups sempre foi um dilema para quem lida com grandes bases de dados no SQL Server. Muitos DBAs criaram rotinas para compactar arquivos de backup utilizando o bom e velho RAR, outros utilizavam soluções mais interessantes como o <a href="http://www.red-gate.com/products/SQL_Backup/" target="_blank">SQL Backup</a> da RedGate.</p>
<p>Finalmente na versão 2008 a Microsoft adicionou uma solução nativa para compactação de backups, no entanto esta opção só estava disponível na edição Enterprise.</p>
<p>Com a chegada do 2008 R2 a Microsoft estendeu a funcionalidade para a edição Standard; ou seja, a coisa tá ficando mais acessível.</p>
<p><strong>“Mão na massa”</strong></p>
<p>Para compactar o backup o processo é bem simples, basicamente precisamos adicionar a opção <strong>WITH COMPRESSION</strong> no comando de backup:</p>
<pre class="brush: sql; title: ; notranslate">
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\AdventureWorks_compactado.BAK'
WITH COMPRESSION;
</pre>
<p>Agora o mais interessante: comparando backups da base AdventureWorks, um compactado e outro sem compactação, temos os seguintes números:</p>
<p><img class="aligncenter size-full wp-image-679" title="compactaBKP" src="http://silasmendes.com/dba/wp-content/uploads/2010/09/compactaBKP1.png" alt="" width="442" height="36" /></p>
<p>Vemos que o arquivo compactado tem cerca de 25% do tamanho do arquivo sem compactação. Bem bacana, não é?</p>
<p>Se você deseja que a compactação de backup seja <em>Default</em> na sua instância, altere a configuração <strong>backup compression default</strong> para 1:</p>
<pre class="brush: sql; title: ; notranslate">
EXEC sp_configure 'backup compression default', '1';
RECONFIGURE;
</pre>
<p class="MsoNormal">Assim, quando você realizar um backup, mesmo que não utilize explicitamente a opção <strong>WITH COMPRESSION</strong> (ou esqueça de utilizá-la) seus backups serão compactados.</p>
<p><span style="font-size: 12.0pt; font-family: &amp;amp;amp; mso-fareast-font-family: &amp;amp;amp; mso-ansi-language: PT-BR; mso-fareast-language: PT-BR; mso-bidi-language: AR-SA;">Bom trabalho!</span></p>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/backup-compactado/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Automatizando tarefas via script</title>
		<link>http://silasmendes.com/dba/adicionando-job-via-script</link>
		<comments>http://silasmendes.com/dba/adicionando-job-via-script#comments</comments>
		<pubDate>Tue, 02 Mar 2010 21:27:58 +0000</pubDate>
		<dc:creator>Silas Mendes</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Programação]]></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[Backup]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[MSDE]]></category>
		<category><![CDATA[schedule]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[SQL Agent]]></category>
		<category><![CDATA[sysjobs]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=515</guid>
		<description><![CDATA[Na época em que o MSDE estava em alta, muitos amigos vinham pedir dicas de como criar uma rotina automática de backups e etc, o maior impasse era sempre a falta de uma interface gráfica. Ao contrário das novas versões &#8230; <a href="http://silasmendes.com/dba/adicionando-job-via-script">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong><br />
</strong></p>
<p>Na época em que o MSDE estava em alta, muitos amigos vinham pedir dicas de como criar uma rotina automática de backups e etc, o maior impasse era sempre a falta de uma interface gráfica.</p>
<p>Ao contrário das novas versões do SQL Server Express, o MSDE possuía o serviço SQL Agent que permite agendar rotinas, backups, etc, e isso era ótimo, mas a barreira era saber como utilizar essa funcionalidade sem uma ferramenta.</p>
<p>Mas enfim, o foco desse texto não é o MSDE, até porque, com o tempo foram disponibilizadas algumas ferramentas para suprir algumas necessidades. A idéia principal é verificarmos como criar uma nova tarefa (job) e automatiza-la utilizando scripts no SQL Server.</p>
<p>Analisando um pouco veremos que precisamos apenas de 4 procedures para criação de um job: <strong>sp_add_job</strong>, <strong>sp_add_jobstep</strong>, <strong>sp_add_jobserver</strong> e <strong>sp_add_jobschedule</strong>. No nosso texto vamos utilizar como exemplo um cenário onde precisamos automatizar o backup da base de dados <em>Master</em>. Vamos analisar agora cada uma das procedures:</p>
<ul>
<li><strong>sp_add_job</strong></li>
</ul>
<p>Esta procedure adiciona um novo registro à tabela <strong>sysjobs</strong>, em linhas gerais, este registro é o nosso job, porém um job sem qualquer funcionalidade e sem agendamento. Inicialmente um job nessas condições não tem qualquer utilidade. Abaixo podemos verificar a criação de um job vazio com o título Backup MASTER:</p>
<pre class="brush: sql; title: ; notranslate">
execute sp_add_job @job_name = 'Backup MASTER'
</pre>
<ul>
<li><strong>sp_add_jobstep</strong></li>
</ul>
<p>Para darmos “vida” ao job criado anteriormente, precisamos adicionar funcionalidades a ele, por exemplo: um passo onde será executado o script de backup.  Para adicionar funcionalidades ao job <strong>Backup MASTER</strong> precisamos conhecer seu código gravado na <em>sysjobs</em>, para isso podemos executar o seguinte comando:</p>
<pre class="brush: sql; title: ; notranslate">
select  job_id
from  sysjobs
where name = 'Backup MASTER'
</pre>
<p>O resultado será um big código! Isso porque o código gerado é do tipo UNIQUEIDENTIFIER, popularmente conhecido como <em>Identificador Universal</em>.  O resultado da minha consulta é: <strong>7EC785F2-36D7-4BEB-B2E4-BFC38E7F4D31 </strong>(é mais prático trabalhar com conteúdos deste tipo armazenando-o numa variável, porém, neste texto iremos aborda-lo explicitamente em cada passo dos exemplos).</p>
<p>Ok. Agora vamos utilizar este big-código junto com a <strong>sp_add_jobstep</strong> para adicionarmos funcionalidade ao nosso JOB:</p>
<pre class="brush: sql; title: ; notranslate">
-- Adiciona função ao Job
execute sp_add_jobstep @job_id = '7EC785F2-36D7-4BEB-B2E4-BFC38E7F4D31',
     @step_name = 'Script Backup Master',
     @command = 'backup master to disk = ''c:\master.bak'''
</pre>
<p>Observe que utilizamos três parâmetros junto à <strong>sp_add_jobstep</strong>: o código do job (@job_id), o nome da funcionalidade (@step_name) e finalmente o script de backup no parâmetro @command.</p>
<p>É interessante esclarecer que um job pode ter inúmeros passos/tarefas, logo você poderá utilizar esta procedure quantas vezes forem necessárias para adicionar novos passos a um mesmo job.</p>
<ul>
<li><strong>sp_add_jobserver</strong></li>
</ul>
<p>Agora vem o passo mais “abstrato” desse processo. Após criarmos o job e definir suas funções precisamos definir em qual servidor ele irá operar. Pressupõe-se que se o job foi criado no servidor &lt;strong&gt;X&lt;/strong&gt; que ele deverá ser executado no contexto deste servidor, porém, aqui nós temos que explicitar isto, logo, precisaremos executar a procedure <strong>sp_add_jobserver </strong>e configurar o job para rodar no contexto do servidor local:</p>
<pre class="brush: sql; title: ; notranslate">
execute sp_add_jobserver
     @job_id = '7EC785F2-36D7-4BEB-B2E4-BFC38E7F4D31',
     @server_name = N'(local)'
</pre>
<p>Pronto!</p>
<p>Neste momento nosso job já tem uma forma e já pode ser executado.</p>
<p>Se quisermos testar a execução manualmente, podemos executar o seguinte comando:</p>
<pre class="brush: sql; title: ; notranslate"> sp_start_job 'Backup MASTER'</pre>
<p>Resultado:</p>
<p><strong>Job &#8216;Backup MASTER&#8217; started successfully.</strong></p>
<p>Vejam que nosso job foi executado com sucesso e que o arquivo foi criado:</p>
<p style="text-align: center;"><a href="http://silasmendes.com/dba/wp-content/uploads/2010/03/jobExecutado.png"><img class="size-medium wp-image-516 aligncenter" title="jobExecutado" src="http://silasmendes.com/dba/wp-content/uploads/2010/03/jobExecutado-300x35.png" alt="" width="300" height="35" /></a></p>
<ul>
<li><strong>sp_add_jobschedule</strong></li>
</ul>
<p>Considerando que a principal funcionalidade do SQL Server Agent e seus jobs é <strong>automatizar tarefas</strong>, não há muito sentindo em executar jobs manualmente, logo, precisamos criar um agendamento para nosso job e assim partimos para a última etapa deste processo onde recorremos à procedure <strong>sp_add_jobschedule</strong>:</p>
<pre class="brush: sql; title: ; notranslate">
execute sp_add_jobschedule
     @job_id = '7EC785F2-36D7-4BEB-B2E4-BFC38E7F4D31',
     @name = N'Agenda Backup',
     @freq_type = 4,
     @active_start_time = 120000,
     @freq_interval = 1
</pre>
<p>O comando pode parecer complexo, mas analisando com calma veremos que é bem tranquilo. Vamos analisar cada um dos parâmetros separadamente:</p>
<p>No <strong>@job_id</strong> definimos para qual job estamos criando o agendamento utilizando o &#8220;big-código&#8221;.</p>
<p>Em <strong>@name</strong> atribuímos um nome para o nosso agendamento.</p>
<p>Em<strong> @freq_type</strong> temos as seguintes possibilidades:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="288" valign="top"><strong>@freq_type</strong></td>
<td width="288" valign="top"><strong>Frequência de Execução</strong></td>
</tr>
<tr>
<td width="288" valign="top">1</td>
<td width="288" valign="top">somente uma vez</td>
</tr>
<tr>
<td width="288" valign="top">4</td>
<td width="288" valign="top">Diariamente</td>
</tr>
<tr>
<td width="288" valign="top">8</td>
<td width="288" valign="top">Semanalmente</td>
</tr>
<tr>
<td width="288" valign="top">16</td>
<td width="288" valign="top">Mensalmente</td>
</tr>
</tbody>
</table>
<p>No nosso script <strong>@freq_type </strong>= 4, logo, o comando indica que o job será executado diariamente.</p>
<p>Em <strong>@active_start_time</strong> definimos o horário da execução, no nosso exemplo 12:00:00, sem os sinais de separação entre horas, minutos e segundos. Se o conteúdo desse parâmetro fosse 215600, o job seria executado às 09:56 da noite.</p>
<p>Por fim temos o parâmetro <strong>@freq_interval</strong> que está diretamente atrelado ao parâmetro <strong>@freq_type</strong> e foi definido como <strong>1</strong> porque nosso backup será executado todos os dias.</p>
<p>(Pode ser complexo definir valor para o parâmetro <em>@freq_interval</em>, mas não iremos nos aprofundar nele neste momento. Para entender sua composição consulte: <a href="http://msdn.microsoft.com/pt-br/library/ms366342.aspx">http://msdn.microsoft.com/pt-br/library/ms366342.aspx</a>)</p>
<p>Para verificar todos os parâmetros das procedures listadas acima, digite por exemplo:</p>
<pre class="brush: sql; title: ; notranslate"> sp_help sp_add_jobschedule </pre>
<ul>
<li><strong>CONCLUSÃO</strong></li>
</ul>
<p>Neste texto podemos notar que automatizar tarefas via script não é uma tarefa tão árdua, mas sem dúvidas, na maioria<br />
dos cenários, a utilização de uma ferramenta gráfica proporcionará maior produtividade; porém se um dia você se deparar com um MSDE ou situação semelhante, irá lembrar que com basicamente 4 passos é possível automatizar suas rotinas.</p>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/adicionando-job-via-script/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Restaurar Backup via Script</title>
		<link>http://silasmendes.com/dba/restaurar-backup-no-sql-server-via-script</link>
		<comments>http://silasmendes.com/dba/restaurar-backup-no-sql-server-via-script#comments</comments>
		<pubDate>Thu, 11 Feb 2010 12:59:07 +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[Backup]]></category>
		<category><![CDATA[restaurar backup]]></category>
		<category><![CDATA[Restore]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[Sql Server]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=503</guid>
		<description><![CDATA[Existem três tipos básicos de backups no SQL Server: o backup completo, o backup diferencial e o backup incremental. O dois últimos sempre trabalham em conjunto com o backup completo. Uma estratégia de backup é algo muito particular de cada &#8230; <a href="http://silasmendes.com/dba/restaurar-backup-no-sql-server-via-script">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Existem três tipos básicos de backups no SQL Server: o backup <strong>completo</strong>, o backup <strong>diferencial </strong>e o backup <strong>incremental</strong>. O dois últimos sempre trabalham em conjunto com o backup completo.</p>
<p>Uma estratégia de backup é algo muito particular de cada negócio; em alguns ambientes críticos é inadimissível a perda de um minuto de informação, já em outros lugares, na ocasião de uma falha, um backup do dia anterior é a solução ideal; logo, a forma como mesclar os diferentes tipos de backups é uma questão a ser analisada (e testada!) com muito critério.</p>
<p>No entanto de uma coisa temos certeza: toda estratégia de backup incluirá um backup completo (comumente chamado de backup FULL) e neste texto iremos focar na recuperação (via script) de um backup completo no SQL Server; para isso utilizaremos como base dois cenários:</p>
<ul>
<li>O primeiro cenário abordará o restore de um backup FULL sobre a base original (do backup), por exemplo, sua base de dados atual sofreu alterações inadequadas e agora precisa da restauração do último backup para reaver os dados anteriores.</li>
<li>No segundo cenário iremos visualizar um DBA que recebe um backup completo de um cliente e precisa restaurá-lo em outro ambiente, por exemplo, para sua equipe de desenvolvimento.</li>
</ul>
<p><strong>CENÁRIO 1</strong></p>
<p>Temos aqui um arquivo de backup chamado AdventuresWorks_FULL.bak. Antes de restaurá-lo precisamos verificar qual o conteúdo desse arquivo físico e se o backup existente irá atender a necessidade do <em>restore</em>; para isso utilizaremos o seguinte comando:</p>
<pre class="brush: sql; title: ; notranslate">restore headeronly from disk ='C:\LabRestore\AdventuresWorks_FULL.bak'</pre>
<p>Veja o resultado:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-504" title="01fig" src="http://silasmendes.com/dba/wp-content/uploads/2010/02/01fig.JPG" alt="01fig" width="565" height="86" /></p>
<p>No resultado da execução do comando RESTORE HEADERONLY podemos identificar que o arquivo em questão contém três backups (sim! um arquivo físico pode conter inúmeros backups de uma mesma base). Observe a posição de cada backup dentro do arquivo (campo Position), o tamanho de cada um (BackupSize)  e suas respectivas datas (BackupStartDate).</p>
<p>No nosso exemplo vamos restaurar o backup do dia <span style="text-decoration: underline;">03 de Fevereiro</span>, logo, o backup a ser restaurado será o da posição 2 (dois). Vamos ao script:</p>
<pre class="brush: sql; title: ; notranslate">
USE MASTER

GO

RESTORE DATABASE AdventureWorks

FROM DISK = 'C:\LabRestore\AdventuresWorks_FULL.bak'

WITH FILE = 2, REPLACE, STATS = 10
</pre>
<p>A base de dados a ser restaurada é a <strong>AdventureWorks</strong>, o arquivo de backup está localizado no endereço: C:\LabRestore\AdventuresWorks_FULL.bak. O backup que será restaurado está na posição 2 deste arquivo (FILE = 2). Como a base já existe é necessário sobrescrevê-la, para isto utilizamos a opção <strong>REPLACE.</strong> O <strong>STATS</strong> mostrará o progresso da restauração em intervalos de 10 em 10%.</p>
<p>Importante: Numa operação de <em>restore</em> a base não deve estar em uso por nenhum usuário (inclusive você), por isso antes de iniciar o script direcionamos a sessão para o database <strong>Master</strong>. Se a base estiver em uso, a seguinte mensagem de erro será exibida:</p>
<p><span style="color: #ff0000;">Msg 3101, Level 16, State 1, Line 1</span></p>
<p><span style="color: #ff0000;">Exclusive access could not be obtained because the database is in use.</span></p>
<p>Se tudo estiver ok, ao final da execução do script você verá uma mensagem similar a esta:</p>
<p><span style="color: #008000;">RESTORE DATABASE successfully processed 22514 pages in 10.209 seconds (18.065 MB/sec).</span></p>
<p><strong>CENÁRIO 2</strong></p>
<p>Neste cenário o DBA deverá restaurar um backup completo recebido de um cliente externo. O arquivo de backup está identificado como <strong>SistemaX_FULL.bak</strong> e será restaurado no ambiente de desenvolvimento que é composto por um servidor com um único disco (C:\).</p>
<p>Vamos analisar o conteúdo do arquivo com o RESTORE HEADERONLY:</p>
<pre class="brush: sql; title: ; notranslate">restore headeronly from disk = 'C:\LabRestore\SistemaX_FULL.bak'</pre>
<p>Veja o resultado:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-505" title="02fig" src="http://silasmendes.com/dba/wp-content/uploads/2010/02/02fig.JPG" alt="02fig" width="525" height="57" /></p>
<p>No resultado acima verificamos que existe um único backup neste arquivo. A base do cliente (campo DatabaseName) está identificada por <strong>SistemaX</strong> e podemos verificar também outros dados como o tamanho do backup e data.</p>
<p>Até aqui tudo bem, mas neste cenário precisamos analisar novos elementos, isso porque a base em questão ainda não existe e ao efetuar a restauração o SQL Server irá trazer além dos objetos deste banco (tabelas, procedures, triggers) suas configurações originais como: endereço dos arquivos físico de dados e log, modo de recovery, etc. Para verificar o estado de algumas destas propriedades podemos utilizar o comando RESTORE FILELISTONLY:</p>
<pre class="brush: sql; title: ; notranslate">restore filelistonly from disk = 'C:\LabRestore\SistemaX_FULL.bak'</pre>
<p>Veja o resultado:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-506" title="03fig" src="http://silasmendes.com/dba/wp-content/uploads/2010/02/03fig.JPG" alt="03fig" width="562" height="69" /></p>
<p>Observe que a base do cliente e seus respectivos arquivos de dados e log estão localizados em discos diferentes. Neste caso, se o DBA realizar um restore comum (como o script utilizado no exemplo anterior) o SQL Server tentará alocar estes arquivos em seus caminhos de origem, logo precisamos alterar este comportamento, já que neste cenário o servidor onde será realizado o restore só possui <strong>um disco</strong>. Veja o comando:</p>
<pre class="brush: sql; title: ; notranslate">
USE MASTER

GO

RESTORE DATABASE SistemaX
FROM DISK = 'C:\LabRestore\SistemaX_FULL.bak'
WITH
MOVE 'SistemaX' TO 'C:\LabRestore\SistemaX.mdf',
MOVE 'SistemaX_log' TO 'C:\LabRestore\SistemaX_log.ldf',
STATS = 10
</pre>
<p>A base de dados a ser restaurada é a <strong>SistemaX</strong> e o arquivo de backup está em: C:\LabRestore\SistemaX_FULL.bak. Observe que adicionamos a opção <strong>MOVE</strong>; esta opção direciona os arquivos de dados e log para um novo caminho. O restante não muda; continuo utilizando o STATS e desta vez não precisamos do REPLACE já que a base não existia.</p>
<p>É importante destacar que os comandos RESTORE FILELISTONLY e RESTORE HEADERONLY não são obrigatórios num processo de restauração de banco; eles são comandos que recuperam informações sobre os arquivos de backup e estas informações podem auxiliar o DBA no processo de restauração.</p>
<p>Existem outros comandos similares, como o RESTORE VERIFYONLY que verifica se o arquivo de backup está legível.</p>
<p><strong>CONCLUSÃO</strong></p>
<p>Como podemos verificar, o restore de um backup <em>full</em>, via script não é difícil, basta conhecer os comandos certos para recuperar informações sobre o conteúdo do arquivo de backup; estas informações  irão auxiliar o usuário na construção do comando de <em>restore</em>.</p>
<p>Nos próximos posts iremos abordar o restore de backups diferenciais e log. Até +</p>
<p>Bom trabalho!</p>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/restaurar-backup-no-sql-server-via-script/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Base de dados virtual</title>
		<link>http://silasmendes.com/dba/base-de-dados-virtual</link>
		<comments>http://silasmendes.com/dba/base-de-dados-virtual#comments</comments>
		<pubDate>Thu, 22 Oct 2009 18:12:38 +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[attach]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[database snapshot]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[GB]]></category>
		<category><![CDATA[Restore]]></category>
		<category><![CDATA[sql server 2005]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[SQL Virtual Database]]></category>
		<category><![CDATA[Trial]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=423</guid>
		<description><![CDATA[Hoje cedo recebi um e-mail da SQL Server Magazine, com a seguinte propaganda: SQL Virtual Database: It&#8217;s As Easy As 1, 2, 3. O anúncio chamou atenção e resolvi dar uma verificada. Imagine o seguinte cenário: você tem um backup &#8230; <a href="http://silasmendes.com/dba/base-de-dados-virtual">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hoje cedo recebi um e-mail da SQL Server Magazine, com a seguinte propaganda:</p>
<p><strong>SQL Virtual Database: It&#8217;s As Easy As 1, 2, 3.</strong></p>
<p>O anúncio chamou atenção e resolvi dar uma verificada.</p>
<p>Imagine o seguinte cenário: você tem um backup de uma base de dados SQL Server e precisa restaurá-lo pra trabalhar em cima dele. O backup tem aproximadamente <strong>180 GB</strong> e você vai precisar de algumas <em>horas </em>pra restaurá-lo.</p>
<p>Imagine agora que você tenha uma forma de “restaurar” esse backup em <strong>10 minutos</strong> e trabalhar em cima dele normalmente, como qualquer outra base de dados do SQL Server, executando consultas, procedures, realizando updates, etc. Essa é a idéia da ferramenta <em>SQL Virtual Database</em> desenvolvida pela <a href="https://www.idera.com/" target="_blank">Idera</a>.</p>
<p>Algumas pessoas poderão dizer, “ah, mas o SQL Server já tem o <strong>Database Snapshot</strong>”. Sim, a idéia é parecida, mas o Database Snapshot só pode ser gerado na mesma instância da base de origem e só está disponível a partir do SQL Server 2005 em edições Enterprise. O <strong>SQL Virtual Database</strong> gera uma base de dados virtual em <em>qualquer </em>instância (inclusive SQL Server 2000) a partir de um arquivo de backup.</p>
<p>Achei a idéia inicial muito boa (o programa está na versão beta) e de certa forma fiquei impressionado com os 9 minutos que esperei para ter uma base virtual, baseada num backup de 180 GB, que estava em outra estação da rede. Particularmente achei uma saída muito interessante pra ambientes de desenvolvimento e homologação.</p>
<p>Vou testá-la repetidamente durante os próximos 14 dias (que é o período do Trial) e se tiver mais considerações posto aqui.</p>
<p>Abaixo algumas telas da ferramenta:</p>
<p><img class="aligncenter size-full wp-image-424" title="Tela de instalação" src="http://silasmendes.com/dba/wp-content/uploads/2009/10/01sqlVirtual.PNG" alt="Tela de instalação" width="499" height="385" /></p>
<h5 style="text-align: center;"><span style="font-weight: normal;">1. Tela de instalação</span></h5>
<p style="text-align: center;"><img class="size-full wp-image-426 aligncenter" title="Attach do backup" src="http://silasmendes.com/dba/wp-content/uploads/2009/10/04sqlVirtual.PNG" alt="Attach do backup" width="503" height="305" /></p>
<h5 style="font-size: 0.83em; text-align: center;"><span style="font-weight: normal;">2. Attach do backup na instância MENDES\SQL05</span></h5>
<p style="text-align: center;">
<p style="text-align: center;"><img class="size-full wp-image-427 aligncenter" style="border: 1px solid black;" title="Base de dados anexada à instância" src="http://silasmendes.com/dba/wp-content/uploads/2009/10/05sqlVirtual.PNG" alt="Base de dados anexada à instância" width="290" height="283" /></p>
<h5 style="font-size: 0.83em; text-align: center;"><span style="font-weight: normal;">3. Base virtual anexada à instância </span></h5>
<p><span style="font-weight: normal;">Link para <a href="http://www.idera.com/Products/SQL-Server/SQL-virtual-database/" target="_blank">download</a>.</span></p>
<p><span style="font-weight: normal;">Bom trabalho!</span></p>
<p><span style="font-weight: normal;"><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/base-de-dados-virtual/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>DBA Checklist – Sobre a profissão e a rotina</title>
		<link>http://silasmendes.com/dba/dba-check-list-parte-1</link>
		<comments>http://silasmendes.com/dba/dba-check-list-parte-1#comments</comments>
		<pubDate>Tue, 15 Sep 2009 21:52:55 +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[SQL SERVER 7]]></category>
		<category><![CDATA[Traduzidos]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[checklist]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[DMVs]]></category>
		<category><![CDATA[documentação]]></category>
		<category><![CDATA[e-book]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[locks]]></category>
		<category><![CDATA[logs]]></category>
		<category><![CDATA[Management Studio]]></category>
		<category><![CDATA[MCITP]]></category>
		<category><![CDATA[monitorar]]></category>
		<category><![CDATA[Performance Data Collector]]></category>
		<category><![CDATA[Profiler]]></category>
		<category><![CDATA[Profissão DBA]]></category>
		<category><![CDATA[rotina DBA]]></category>
		<category><![CDATA[Sql Server]]></category>
		<category><![CDATA[sql server 2000]]></category>
		<category><![CDATA[sql server 2005]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[System Monitor]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=306</guid>
		<description><![CDATA[Essa série de Check List para DBAs SQL Server foi escrita por Brad McGehee para o site http://www.simple-talk.com/ . É um texto sucinto, mas muito completo. Tomei a liberdade de adicionar algumas observações (em itálico) que normalmente apontam para outros &#8230; <a href="http://silasmendes.com/dba/dba-check-list-parte-1">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<blockquote>
<h5><span style="font-weight: normal;">Essa série de Check List para DBAs SQL Server foi escrita por </span><a href="http://www.simple-talk.com/author/brad-mcgehee/" target="_blank"><span style="font-weight: normal;">Brad McGehee</span></a><span style="font-weight: normal;"> para o site </span><a href="http://www.simple-talk.com/"><span style="font-weight: normal;">http://www.simple-talk.com/</span></a><span style="font-weight: normal;"> . É um texto sucinto, mas muito completo. Tomei a liberdade de adicionar algumas observações </span><em><span style="font-weight: normal;">(em itálico)</span></em><span style="font-weight: normal;"> que normalmente apontam para outros conteúdos em português. </span><strong><span style="font-weight: normal;">O texto original pode ser lido </span><a href="http://www.simple-talk.com/sql/database-administration/brads-sure-dba-checklist/" target="_blank"><span style="font-weight: normal;">aqui</span></a><span style="font-weight: normal;">.</span></strong></h5>
</blockquote>
<h3><strong>Dicas de boas práticas para tornar-se um DBA Excepcional</strong></h3>
<ul>
<li><span style="background-color: #ffffff;">Junte-se a um grupo de usuários de SQL Server.</span>
<ul>
<li><span style="background-color: #ffffff;"><em>No artigo o autor sugere o </em><em><a href="http://74.125.91.132/translate_c?hl=pt-BR&amp;ie=UTF-8&amp;sl=en&amp;tl=pt&amp;u=http://chapters.sqlpass.org/&amp;rurl=translate.google.com.br&amp;usg=ALkJrhh0bGrhgukjK2iYQQHWDcvXqslxFA">chapters.sqlpass.org</a>,</em><em> </em><em>aqui no Brasil temos: <span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><a href="http://technet.microsoft.com/pt-br/sqlserver/default.aspx" target="_blank">TechNet</a>,  <span style="font-style: normal; background-color: #ffffff;"><em><a href="http://msdn.microsoft.com/pt-br/sqlserver/default.aspx" target="_blank">MSDN </a>, <span style="font-style: normal; background-color: #ffffff;"><em><a href="http://www.mcdbabrasil.com.br/" target="_blank">MCDBA Brasil</a>.</em><em> </em></span></em></span></em></span></em></span></em></span></li>
</ul>
</li>
<li><span style="background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;">Participe pelo menos uma vez ao ano de uma conferência profissional.</span></em></span></em></span></em></span></em></span></em></span></li>
<li><span style="background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;">Faça pelo menos um treinamento por ano.</span></em></span></em></span></em></span></em></span></em></span></li>
<li><span style="background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;">Leia pelo menos quatro livros de SQL Server por ano.</span></em></span></em></span></em></span></em></span></em></span></li>
<li><span style="background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;">Leia o e-book <strong>How to Become an Exceptional DBA.</strong></span></em></span></em></span></em></span></em></span></em></span>
<ul>
<li><span style="background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><strong><span style="font-weight: normal; background-color: #ffffff;"><strong><span style="font-weight: normal; background-color: #ffffff;"><em>Livro escrito pelo autor que dá diversas dicas de como torna-se um DBA Excepcional (</em><em><a href="http://www.red-gate.com/products/SQL_Backup/offers/brad_exceptional_dba_ebook.htm">download </a>em inglês).</em></span></strong></span></strong></span></em></span></em></span></em></span></em></span></em></span></li>
</ul>
</li>
<li><span style="background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><strong><span style="font-weight: normal; background-color: #ffffff;"><strong><span style="font-weight: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;">Saiba tudo o que puder sobre o seu trabalho, principalmente naquelas áreas que ninguém gosta ou quer dominar.</span></em></span></strong></span></strong></span></em></span></em></span></em></span></em></span></em></span></li>
<li><span style="background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><strong><span style="font-weight: normal; background-color: #ffffff;"><strong><span style="font-weight: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;">No seu trabalho, seja voluntário, envolva-se em novas tarefas e aceite desafios, isso fará com que você conheça mais sobre a organização da sua empresa.</span></em></span></strong></span></strong></span></em></span></em></span></em></span></em></span></em></span></li>
<li><span style="background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><strong><span style="font-weight: normal; background-color: #ffffff;"><strong><span style="font-weight: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;">Instale o SQL Server no computador da sua casa ou em seu notebook e pratique, aprendendo novas funcionalidades do SQL Server, principalmente no SQL Server 2008.</span></em></span></strong></span></strong></span></em></span></em></span></em></span></em></span></em></span></li>
<li><span style="background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><strong><span style="font-weight: normal; background-color: #ffffff;"><strong><span style="font-weight: normal; background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;">Participe de fóruns sobre SQL Server (fazendo e respondendo perguntas).</span></em></span></strong></span></strong></span></em></span></em></span></em></span></em></span></em></span>
<ul>
<li><span style="background-color: #ffffff;"><a href="http://74.125.91.132/translate_c?hl=pt-BR&amp;ie=UTF-8&amp;sl=en&amp;tl=pt&amp;u=http://www.sqlservercentral.com/&amp;rurl=translate.google.com.br&amp;usg=ALkJrhihl84Mpv8Exdgrzf0g7rOxwW_rfg">www.SQLServerCentral.com</a></span></li>
<li><span style="background-color: #ffffff;"><a href="http://74.125.91.132/translate_c?hl=pt-BR&amp;ie=UTF-8&amp;sl=en&amp;tl=pt&amp;u=http://www.sql-server-performance.com/&amp;rurl=translate.google.com.br&amp;usg=ALkJrhhP9MDgZVb9WPUPQBrGDY7ys_sZPw">www.SQL&#8211;Performance.Com</a></span></li>
<li><span style="background-color: #ffffff;"><a href="http://74.125.91.132/translate_c?hl=pt-BR&amp;ie=UTF-8&amp;sl=en&amp;tl=pt&amp;u=http://www.microsoft.com/communities/newsgroups/en-us/default.aspx&amp;rurl=translate.google.com.br&amp;usg=ALkJrhgOtAbDwv5cwBIZoP0qTVPdslsNWA">newsgroups www.microsoft.com / comunidades / en-US / default.aspx</a></span></li>
<li><span style="background-color: #ffffff;"><a href="http://74.125.91.132/translate_c?hl=pt-BR&amp;ie=UTF-8&amp;sl=en&amp;tl=pt&amp;u=http://www.microsoft.com/communities/newsgroups/en-us/default.aspx&amp;rurl=translate.google.com.br&amp;usg=ALkJrhgOtAbDwv5cwBIZoP0qTVPdslsNWA"></a><em>Alguns no Brasil: </em><a href="http://social.technet.microsoft.com/Forums/pt-BR/category/sqlserver" target="_blank"><em>Fórum TechNet</em></a><em>, </em><a href="http://www.mcdbabrasil.com.br/" target="_blank"><em>MCDBA Brasil</em></a><em> e </em><span style="background-color: #ffffff;"><a href="http://forum.devmedia.com.br/viewforum.php?f=19" target="_blank"><em>DevMedia</em></a><em>.</em></span></span></li>
</ul>
</li>
</ul>
<ul>
<li><span style="background-color: #ffffff;"><span style="background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;">Certifique-se, torne-se um <strong>MCITP</strong>:</span></em></span></span>
<ul>
<li><span style="background-color: #ffffff;"><span style="background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><a href="http://www.microsoft.com/learning/mcp/mcitp/dbadmin/default.mspx" target="_blank">Database Administrator</a> </span></em></span></span></li>
<li><span style="background-color: #ffffff;"><span style="background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><a href="http://www.microsoft.com/learning/mcp/mcitp/dbdev/default.mspx" target="_blank">Database Developer</a> </span></em></span></span></li>
<li><span style="background-color: #ffffff;"><span style="background-color: #ffffff;"><em><span style="font-style: normal; background-color: #ffffff;"><a href="http://www.microsoft.com/learning/mcp/mcitp/bid/default.mspx" target="_blank">Business       Intelligence Developer</a> </span></em></span></span></li>
</ul>
</li>
</ul>
<h3><strong>Dia-a-dia</strong></h3>
<ul>
<li><span style="background-color: #ffffff;">Verifique os logs do Windows, do SQL Server e logs de segurança.</span></li>
<li><span style="background-color: #ffffff;">Verifique se todos os <strong>jobs</strong> foram executados com sucesso.</span></li>
<li><span style="background-color: #ffffff;">Veja se os backups foram executados com sucesso e se foram salvos em local seguro.</span></li>
<li><span style="background-color: #ffffff;">Monitore o espaço em disco para garantir que o SQL Server não fique sem espaço. Para um melhor desempenho, todos os discos devem ter pelo menos 20% de espaço livre.</span></li>
<li><span style="background-color: #ffffff;">Durante todo o dia, periodicamente, monitore o desempenho do seu servidor. Use o System Monitor, Profiler, DMVs, ou o <strong>SQL Server 2008 Performance Data Collector</strong>.</span></li>
<li><span style="background-color: #ffffff;">Use o Management Studio ou o Profiler para monitorar e identificar problemas de locks [bloqueios].</span></li>
<li><span style="background-color: #ffffff;">Mantenha um registro de todas as alterações feitas em seus servidores, incluindo uma documentação de todos os problemas de desempenho que você encontrar e corrigir.</span></li>
<li><span style="background-color: #ffffff;">Crie alertas no SQL Server para notificá-lo através de e-mail sobre problemas potenciais. Ao receber os e-mails tome as medidas necessárias.</span></li>
<li><span style="background-color: #ffffff;">Dedique um tempo do seu dia para aprender algo novo e promover seu desenvolvimento profissional.</span></li>
</ul>
<p><strong><em><br />
</em></strong></p>
<p><em> </em></p>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/dba-check-list-parte-1/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

