<?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; Vida Real</title>
	<atom:link href="http://silasmendes.com/dba/category/vida-real/feed" rel="self" type="application/rss+xml" />
	<link>http://silasmendes.com/dba</link>
	<description>SQL Server &#38; Banco de Dados</description>
	<lastBuildDate>Thu, 29 Jul 2010 15:01:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>SQL Server 2008 R2 Express Edition</title>
		<link>http://silasmendes.com/dba/sql-server-2008-r2-express-edition</link>
		<comments>http://silasmendes.com/dba/sql-server-2008-r2-express-edition#comments</comments>
		<pubDate>Thu, 15 Jul 2010 13:35:38 +0000</pubDate>
		<dc:creator>Silas Mendes</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Vida Real]]></category>
		<category><![CDATA[Instalar SQL Server 2008]]></category>
		<category><![CDATA[SQL Server 2008 Express]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=590</guid>
		<description><![CDATA[A cada nova versão do SQL Server a Microsoft vem tornando suas edições gratuitas ainda mais atrativas. Já abordei anteriormente por aqui sobre a instalação do SQL Server 2008 Express; então se você está procurando informações sobre SQL Server 2008 Express, aproveite esse texto para se atualizar sobre o segundo release (R2) do SQL Server [...]]]></description>
			<content:encoded><![CDATA[<p>A cada nova versão do SQL Server a Microsoft vem tornando suas edições gratuitas ainda mais atrativas. Já abordei <a href="http://silasmendes.com/dba/sql-server-2008-express" target="_blank">anteriormente por aqui</a> sobre a instalação do SQL Server 2008 Express; então se você está procurando informações sobre SQL Server 2008 Express, aproveite esse texto para se atualizar sobre o segundo release (R2) do SQL Server 2008 Express Edition.</p>
<p>De cara, a principal novidade é que SQL 2008 <strong>R2</strong> Express permite gerenciar bases de dados com até 10 GB. Na última versão o limite eram 4 GB por base de dados. Uma melhoria interessante não é?</p>
<p>As limitações de CPU e memória continuam as mesmas, sendo 1 CPU e 1GB RAM. No caso da CPU lembre-se que a limitação é por chip; logo, se você tiver um chip <em>Six-Core</em> seu SQL irá utilizar os 6 núcleos deste chip.</p>
<p><a rel="http://www.microsoft.com/express/Database/InstallOptions.aspx" href="http://silasmendes.com/dba/wp-content/uploads/2010/07/logo_SQL2008R2.png" target="_blank"><img class="size-medium wp-image-591 alignright" title="logo_SQL2008R2" src="http://silasmendes.com/dba/wp-content/uploads/2010/07/logo_SQL2008R2-300x82.png" alt="" width="300" height="82" /></a>Para este release são ofertados três opções de instalação: a instalação <strong><em>SQL Server 2008 R2 Express</em></strong> instala somente a engine do SQL, ou seja, o serviço principal do SQL Server onde é possível rodar bancos de dados, criar ou alterar objetos e etc, porém sem nenhuma ferramenta gráfica. A instalação <strong><em>SQL Server 2008 R2 Express with Tools Edition</em></strong> oferece a engine e adiciona também o Management Studio que é uma ferramenta gráfica para gerenciamento das instâncias; na <strong><em>SQL Server 2008 R2 Express with Advanced Services</em></strong> além da engine e do Management Studio é oferecido também o Reporting Services para o desenvolvimento de relatórios no SQL Server. Ambas instalações estão disponíveis para as plataformas de 32 e 64 bits.</p>
<p>Os pré-requisitos continuam os mesmos: se você for instalar somente a <em>Engine</em> desta versão (sem nenhuma ferramenta gráfica), será necessário somente o Framework 2.0; se for utilizar as ferramentas gráficas o Framework 3.5 SP1 é um pré-requisito. Assim como na última versão o Windows Installer 4.5 e Windows Power Shell 1.0 são necessários para a instalação.</p>
<p>O processo de instalação continua bem similiar ao que publiquei aqui no ano passado, portanto se desejar um <a href="http://silasmendes.com/dba/sql-server-2008-express" target="_blank">passo-a-passo da instalação básica acesse este link</a>.</p>
<p>E pra finalizar segue o link de download do R2 Express: <a href="http://www.microsoft.com/express/Database/InstallOptions.aspx">http://www.microsoft.com/express/Database/InstallOptions.aspx</a></p>
<p>Até +</p>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/sql-server-2008-r2-express-edition/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MCTS SQL Server 2008</title>
		<link>http://silasmendes.com/dba/mcts-sql-server-2008</link>
		<comments>http://silasmendes.com/dba/mcts-sql-server-2008#comments</comments>
		<pubDate>Tue, 20 Apr 2010 13:54:50 +0000</pubDate>
		<dc:creator>Silas Mendes</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Vida Real]]></category>
		<category><![CDATA[70-431]]></category>
		<category><![CDATA[70-432]]></category>
		<category><![CDATA[Brás Figueiredo]]></category>
		<category><![CDATA[Certificação]]></category>
		<category><![CDATA[MCTS]]></category>
		<category><![CDATA[Segunda Chance]]></category>
		<category><![CDATA[SQL Server 2008]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=583</guid>
		<description><![CDATA[Eu estava reagendando esta prova a mais de um mês. Toda vez que eu folheava o Training Kit me deparava com uma novidade do SQL Server 2008 que me fazia olhar e querer entender mais os detalhes, e assim eu reagendava o exame pois achava que não estava preparado. No fim de semana estabeleci que [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">Eu estava reagendando esta prova a mais de um mês. Toda vez que eu folheava o Training Kit me deparava com uma novidade do SQL Server 2008 que me fazia olhar e querer entender mais os detalhes, e assim eu reagendava o exame pois achava que não estava preparado. No fim de semana estabeleci que faria a prova na segunda-feira (ontem) e que não iria adiar mais.</div>
<div id="_mcePaste">A questão é que o foco do <strong>70-432</strong> não são os detalhes, você precisa ter o conhecimento das novas features, entender suas principais finalidades e os pré-requisitos para implementá-las.</div>
<p><img class="alignleft size-full wp-image-584" title="button_MCTS_SQL2008_Implementation" src="http://silasmendes.com/dba/wp-content/uploads/2010/04/button_MCTS_SQL2008_Implementation.gif" alt="" width="240" height="77" /></p>
<div id="_mcePaste">O exame me surpreendeu porque eu esperava um grau maior de dificuldade&#8230; mas foi uma boa prova; o grande foco está nas novidades, mas em algumas questões você tem que utilizar soluções de versões anteriores. Ao contrário da 70-431 não teve o teste prático (que eu achava interessante) e foram quase duas horas para responder aproximadamente 40</div>
<div id="_mcePaste">questões. Comparando os dois exames, para mim o 70-432 está mais fácil.</div>
<div id="_mcePaste">Se você está preocupado com a complexidade das novas features do SQL Server 2008, eu te encorajo dizendo que este não é o exame que irá abordar detalhes. Foque na visão geral da administração e encare a prova.</div>
<div id="_mcePaste">Tenho que acrescentar também que esta foi a primeira vez que fiz uma prova na <a href="http://www.bf.com.br/" target="_blank">Brás Figueiredo</a> e a experiência foi muito agradável: ambiente silencioso, ar-condicionado numa temperatura adequada, um bom equipamento, enfim, recomendo.</div>
<div id="_mcePaste">Depois de escrever tudo isso tenho que complementar que fui <em>aprovado </em>:)</div>
<div id="_mcePaste">A sensação de não utilizar a &#8220;Segunda Chance&#8221; é sempre boa (não posso negar) e eu só posso desejar o mesmo a todos vocês.</div>
<div id="_mcePaste">Bom trabalho e bom estudo!</div>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/mcts-sql-server-2008/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Resposta Desafio &#8211; CHAR X VARCHAR</title>
		<link>http://silasmendes.com/dba/resposta-desafio-char-x-varchar</link>
		<comments>http://silasmendes.com/dba/resposta-desafio-char-x-varchar#comments</comments>
		<pubDate>Tue, 16 Mar 2010 14:52:54 +0000</pubDate>
		<dc:creator>Silas Mendes</dc:creator>
				<category><![CDATA[Vida Real]]></category>
		<category><![CDATA[char]]></category>
		<category><![CDATA[right()]]></category>
		<category><![CDATA[varchar]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=549</guid>
		<description><![CDATA[  Primeiro tenho que registrar que boa parte das pessoas pra quem enviei o desafio responderam corretamente. Achei interessante a interação e o clima da brincadeira; agora tá na hora de oficializar a resposta. Vamos lá: Normalmente, quando questionam a diferença entre CHAR e VARCHAR a primeira resposta é: um tem tamanho fixo, o outro [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<p>Primeiro tenho que registrar que boa parte das pessoas pra quem enviei o desafio responderam corretamente. Achei interessante a interação e o clima da brincadeira; agora tá na hora de oficializar a resposta. Vamos lá:</p>
<p>Normalmente, quando questionam a diferença entre CHAR e VARCHAR a primeira resposta é: <strong>um tem tamanho fixo, o outro tem tamanho variável</strong>. Mas já que o CHAR tem tamanho fixo, o que acontece quando inserimos um dado que não ocupa todo o espaço reservado? E além disso, quando inserimos um dado num campo CHAR em qual <em>direção</em> o dado é inserido?</p>
<p>Então, ninguém melhor que o Books Online para responder:</p>
<blockquote><p>Se um valor mais curto que o comprimento da coluna for inserido em uma coluna char NOT NULL<strong>, o valor será preenchido à <span style="text-decoration: underline;">direita</span>, com espaços em branco, até atingir o tamanho da coluna</strong>. Por exemplo, se uma coluna estiver definida como char(10) e os dados a serem armazenados forem &#8220;music&#8221;, o SQL Server armazenará os dados como &#8220;music_____&#8221;, onde &#8220;_&#8221; indica um espaço em branco.</p>
</blockquote>
<h5 style="padding-left: 60px;"><span style="font-weight: normal;">Fonte:</span><span style="font-weight: normal;"> <a href="http://msdn.microsoft.com/pt-br/library/ms175055.aspx">http://msdn.microsoft.com/pt-br/library/ms175055.aspx</a></span></h5>
<p>Com as considerações acima, podemos resumir a consulta do desafio a isto:</p>
<blockquote><p>SELECT</p>
<p>RIGHT(&#8217;05 &#8216;,2) as &#8216;CHAR&#8217;,</p>
<p>RIGHT(&#8217;05&#8242; ,2) as &#8216;VARCHAR&#8217;</p>
</blockquote>
<p>Como a função RIGHT está extraindo duas posições à direita (contando com o espaço em branco), o Zero (0) do CHAR é ignorado no resultado.</p>
<p>Valeu pela participação dos amigos, em especial a do amigo <strong><em><a href="http://www.blogdati.com.br/" target="_blank">Léo Lopes</a></em></strong> que contribuiu na elaboração da resposta utilizando referências do BOL :)</p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/resposta-desafio-char-x-varchar/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desafio T-SQL &#8211; CHAR X VARCHAR</title>
		<link>http://silasmendes.com/dba/desafio-sql</link>
		<comments>http://silasmendes.com/dba/desafio-sql#comments</comments>
		<pubDate>Wed, 10 Mar 2010 21:47:10 +0000</pubDate>
		<dc:creator>Silas Mendes</dc:creator>
				<category><![CDATA[Bla bla bla]]></category>
		<category><![CDATA[Vida Real]]></category>
		<category><![CDATA[char]]></category>
		<category><![CDATA[desafio sql]]></category>
		<category><![CDATA[right()]]></category>
		<category><![CDATA[T-SQL]]></category>
		<category><![CDATA[varchar]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=531</guid>
		<description><![CDATA[  Hoje a tarde meu amigo Adilson Pereira me mandou um desafio bem interessante, vou postar aqui exatamente do modo como ele propôs: Observem a diferença que dá no resultado de um comando usando o CHAR e o VARCHAR:     declare @data datetime set @data = &#8217;20100310 05:05:05&#8242; SELECT RIGHT(&#8217;0&#8242; + CONVERT(   CHAR(2), [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<p>Hoje a tarde meu amigo <strong><em>Adilson Pereira </em></strong>me mandou um desafio bem interessante, vou postar aqui exatamente do modo como ele propôs:</p>
<p><strong>Observem a diferença que dá no resultado de um comando usando o CHAR e o VARCHAR:</strong></p>
<p> </p>
<blockquote><p> </p>
<div id="_mcePaste">declare @data datetime</div>
<div id="_mcePaste">set @data = &#8217;20100310 05:05:05&#8242;</div>
<div id="_mcePaste">SELECT</div>
<div id="_mcePaste">RIGHT(&#8217;0&#8242; + CONVERT(   CHAR(2), DATEPART(mi, @data)), 2) as &#8216;CHAR&#8217;,</div>
<div id="_mcePaste">RIGHT(&#8217;0&#8242; + CONVERT(VARCHAR(2), DATEPART(mi, @data)), 2) as &#8216;VARCHAR&#8217;</div>
<p> </p>
</blockquote>
<p>A solução é interessante :)</p>
<p>E você? Tem um palpite do porque?</p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/desafio-sql/feed</wfw:commentRss>
		<slash:comments>4</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[Vida Real]]></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 do SQL Server Express, o MSDE possuía o serviço SQL Agent que permite agendar rotinas, [...]]]></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>
<p><strong>sp_add_job</strong></p>
<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>
<blockquote><p>execute sp_add_job @job_name = &#8216;Backup MASTER&#8217;</p></blockquote>
<p><strong>sp_add_jobstep</strong></p>
<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>
<blockquote><p>select  job_id</p>
<p>from  sysjobs</p>
<p>where name = &#8216;Backup MASTER&#8217;</p></blockquote>
<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>
<blockquote><p>&#8211; Adiciona função ao Job</p>
<p>execute sp_add_jobstep</p>
<p style="padding-left: 30px;">@job_id = &#8217;7EC785F2-36D7-4BEB-B2E4-BFC38E7F4D31&#8242;,</p>
<p style="padding-left: 30px;">@step_name = &#8216;Script Backup Master&#8217;,</p>
<p style="padding-left: 30px;">@command = <strong>&#8216;backup master to disk = &#8221;c:\master.bak&#8221;&#8217;</strong></p>
</blockquote>
<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>
<p><strong> </strong></p>
<p><strong>sp_add_jobserver</strong></p>
<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 <strong>X</strong> que ele deverá ser executado no contexto deste servidor, porém, aqui nós temos que <em>explicitar</em> isto, logo, precisaremos executar a procedure <strong>sp_add_jobserver </strong>e<strong> </strong>configurar o job para rodar no contexto do servidor local:</p>
<blockquote><p>execute sp_add_jobserver</p>
<p>@job_id = &#8217;7EC785F2-36D7-4BEB-B2E4-BFC38E7F4D31&#8242;,</p>
<p>@server_name = N&#8217;(local)&#8217;</p></blockquote>
<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>
<blockquote><p>sp_start_job &#8216;Backup MASTER&#8217;</p></blockquote>
<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><a href="http://silasmendes.com/dba/wp-content/uploads/2010/03/jobExecutado.png"><img class="size-medium wp-image-516 alignleft" title="jobExecutado" src="http://silasmendes.com/dba/wp-content/uploads/2010/03/jobExecutado-300x35.png" alt="" width="300" height="35" /></a></p>
<p><strong>sp_add_jobschedule</strong><strong> </strong></p>
<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>
<blockquote><p>execute sp_add_jobschedule</p>
<p>@job_id = &#8217;7EC785F2-36D7-4BEB-B2E4-BFC38E7F4D31&#8242;,</p>
<p>@name = N&#8217;Agenda Backup&#8217;,</p>
<p>@freq_type = 4,</p>
<p>@active_start_time = 120000,</p>
<p>@freq_interval = 1</p></blockquote>
<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>
<blockquote><p>sp_help <em>sp_add_jobschedule</em></p></blockquote>
<p><strong>CONCLUSÃO</strong></p>
<p>Neste texto podemos notar que automatizar tarefas via script não é uma tarefa tão árdua, mas sem dúvidas, na maioria 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>0</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[Vida Real]]></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 negócio; em alguns ambientes críticos é inadimissível a perda de um minuto de informação, já em [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<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>
<blockquote><p>restore headeronly from disk =&#8217;C:\LabRestore\AdventuresWorks_FULL.bak&#8217;</p>
</blockquote>
<p>Veja o resultado:</p>
<p><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="706" height="108" /></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>
<blockquote><p>USE MASTER</p>
<p>GO</p>
<p>RESTORE DATABASE AdventureWorks</p>
<p>FROM DISK = &#8216;C:\LabRestore\AdventuresWorks_FULL.bak&#8217;</p>
<p>WITH FILE = 2, REPLACE, STATS = 10</p>
</blockquote>
<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>
<blockquote><p>restore headeronly from disk = &#8216;C:\LabRestore\SistemaX_FULL.bak&#8217;</p>
</blockquote>
<p>Veja o resultado:</p>
<p><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="656" height="71" /></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>
<blockquote><p>restore filelistonly from disk = &#8216;C:\LabRestore\SistemaX_FULL.bak&#8217;</p>
</blockquote>
<p>Veja o resultado:</p>
<p><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="702" height="86" /></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>
<blockquote><p>USE MASTER</p>
<p>GO</p>
<p>RESTORE DATABASE SistemaX</p>
<p>FROM DISK = &#8216;C:\LabRestore\SistemaX_FULL.bak&#8217;</p>
<p>WITH</p>
<p>MOVE &#8216;SistemaX&#8217; TO &#8216;C:\LabRestore\SistemaX.mdf&#8217;,</p>
<p>MOVE &#8216;SistemaX_log&#8217; TO &#8216;C:\LabRestore\SistemaX_log.ldf&#8217;,</p>
<p>STATS = 10</p>
</blockquote>
<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>0</slash:comments>
		</item>
		<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[Vida Real]]></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>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 300px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">USE master;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 300px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">GO</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 300px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">EXEC sp_configure &#8216;show advanced option&#8217;, &#8217;1&#8242;;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 300px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">GO</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 300px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">RECONFIGURE;</div>
<blockquote><p>USE master;</p>
<p>GO</p>
<p>EXEC sp_configure &#8216;show advanced option&#8217;, &#8217;1&#8242;;</p>
<p>GO</p>
<p>RECONFIGURE;</p></blockquote>
<div>Veja que no comando acima é possível ter uma idéia da sintaxe desta procedure. A idéia básica é a seguinte:</div>
<p><strong>sp_configure ‘nome da configuração’, ‘novo valor da configuração’</strong>.</p>
<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>
<blockquote><p>EXEC sp_configure &#8216;max server memory (MB)&#8217;, &#8217;300&#8242;;</p></blockquote>
<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>
<blockquote><p>EXEC sp_configure &#8216;allow updates&#8217;, &#8217;1&#8242;.</p></blockquote>
<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>
		<item>
		<title>Colocando um script em espera</title>
		<link>http://silasmendes.com/dba/colocando-um-script-em-espera</link>
		<comments>http://silasmendes.com/dba/colocando-um-script-em-espera#comments</comments>
		<pubDate>Thu, 19 Nov 2009 21:16:18 +0000</pubDate>
		<dc:creator>Silas Mendes</dc:creator>
				<category><![CDATA[Vida Real]]></category>
		<category><![CDATA[dbcc]]></category>
		<category><![CDATA[getdate]]></category>
		<category><![CDATA[logspace]]></category>
		<category><![CDATA[SQL Agent]]></category>
		<category><![CDATA[T-SQL]]></category>
		<category><![CDATA[WAITFOR DELAY]]></category>
		<category><![CDATA[WAITFOR TIME]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=470</guid>
		<description><![CDATA[Uma dica rápida antes do feriadão: Como agendar um script ou executá-lo de forma recorrente sem utilizar o SQL Agent? O SQL possui um comando de controle de fluxo que pode nos auxiliar nessas tarefas: WAITFOR. Como utilizá-lo? Digamos que você queira monitorar o crescimento dos logs a cada 5 minutos. Nesse caso podemos utilizar [...]]]></description>
			<content:encoded><![CDATA[<p>Uma dica rápida antes do feriadão:</p>
<p>Como agendar um script ou executá-lo de forma recorrente sem utilizar o SQL Agent?</p>
<p>O SQL possui um comando de <em>controle de fluxo</em> que pode nos auxiliar nessas tarefas: <strong>WAITFOR</strong>.</p>
<p>Como utilizá-lo?</p>
<p>Digamos que você queira monitorar o crescimento dos logs a cada 5 minutos. Nesse caso podemos utilizar o <strong>WAITFOR DELAY</strong> junto com uma estrutura de repetição como o <em>while</em>. Veja o exemplo:</p>
<blockquote><p>declare @i int</p>
<p>set @i = 1</p>
<p>while @i &lt; 12</p>
<p>begin</p>
<p>&#8211; coleta informação sobre espaço utilizado pelo log</p>
<p>dbcc sqlperf(logspace)</p>
<p>&#8211; aguarda 05 minutos para continuar</p>
<p>waitfor delay &#8217;00:05:00&#8242;</p>
<p>set @i = @i + 1</p>
<p>end</p></blockquote>
<p>Agora imagine um cenário onde você precise &#8220;agendar&#8221; a execução de um script para as 22h. Veja o exemplo:</p>
<blockquote><p>&#8211; espera até às 22h</p>
<p>waitfor time &#8217;22:00:00&#8242;</p>
<p>GO</p>
<p>dbcc sqlperf(logspace)</p>
<p>GO</p>
<p>select getdate() horaExecucao</p></blockquote>
<p>É importante salientar que este comando <strong>não substitui o SQL Agent</strong>! Ele normalmente é utilizado em situações pontuais. Por exemplo, para o DBA às vezes é interessante monitorar durante alguns minutos a situação dos locks e para isso não é necessário criar um job e agendá-lo no SQL Agent, é mais simples utilizar o WAITFOR DELAY. Além disso você pode acompanhar o resultado das execuções diretamente no Management Studio, Query Analyser, sqlcmd, etc.</p>
<p>O comando é interessante, mas não veja nele uma forma de implementar uma nova política de backup, ok?</p>
<p>Bom <a href="http://pt.wikipedia.org/wiki/Dia_da_Consci%C3%AAncia_Negra" target="_blank">feriadão</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/colocando-um-script-em-espera/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Brasil Summit 2009</title>
		<link>http://silasmendes.com/dba/sharepoint-brasil-summit-2009</link>
		<comments>http://silasmendes.com/dba/sharepoint-brasil-summit-2009#comments</comments>
		<pubDate>Mon, 09 Nov 2009 14:35:25 +0000</pubDate>
		<dc:creator>Silas Mendes</dc:creator>
				<category><![CDATA[Vida Real]]></category>
		<category><![CDATA[Business Conectivity Services]]></category>
		<category><![CDATA[co-autoria]]></category>
		<category><![CDATA[Excel Services]]></category>
		<category><![CDATA[Google Docs]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[Office Web Apps]]></category>
		<category><![CDATA[Ribbon]]></category>
		<category><![CDATA[SharePoint Brasil Summit 2009]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=457</guid>
		<description><![CDATA[Apesar de não ser minha praia, não posso deixar de comentar sobre o evento SharePoint Brasil Summit 2009 que aconteceu nesse fim de semana e o qual tive a oportunidade de participar. Meu foco de estudo e trabalho é banco de dados, mas algumas soluções são realmente fantásticas e o Sharepoint e o Office estão [...]]]></description>
			<content:encoded><![CDATA[<p>Apesar de não ser minha <em>praia</em>, não posso deixar de comentar sobre o evento <strong>SharePoint Brasil Summit 2009</strong> que aconteceu nesse fim de semana e o qual tive a oportunidade de participar. Meu foco de estudo e trabalho é banco de dados, mas algumas soluções são realmente fantásticas e o Sharepoint e o Office estão na minha lista de soluções preferidas (além disso, o Sharepoint e SQL Server se complementam de forma magistral).</p>
<p>Durante as apresentações era interessante ouvir as novidades que os palestrantes traziam e a reação do público (rolou até aplausos para algumas features).  Em particular gostei muito da nova interface <em>Ribbon</em>. O produto tem sido moldado para ser mais dinâmico e dá pra notar isso em coisas simples como a alteração e classificação (rating) de conteúdo, mudança entre janelas, etc.</p>
<p><img class="alignleft size-full wp-image-458" title="sharePoint2010" src="http://silasmendes.com/dba/wp-content/uploads/2009/11/share2010.PNG" alt="sharePoint2010" width="184" height="111" />Mas o que eu gostei de ver foi a prévia do <strong>Office Web Apps</strong>!! Fiquei surpreendido! Trabalhar com arquivos do Office, num browser, com a maioria das funcionalidades da versão instalada foi muito legal. E mais, a Microsoft promete isso em QUALQUER browser (isso eu quero conferir pessoalmente, risos). A feature <em>co-autoria</em> também ficou sensacional. A idéia é realmente facilitar a comunicação e ter o cuidado de tornar a experiência do usuário ainda melhor (creio que o Google Docs terá que reformular algumas coisas pra <em>bater</em> o que está vindo por aí).</p>
<p>Infelizmente a palestra de <em>Excel Services</em> e <em>Business Conectivity Services</em> não rolou e  era a que eu mais esperava, mas os organizadores do evento prometeram um vídeo sobre o conteúdo.</p>
<p>Em geral o evento foi bem interessante, muito organizado mas com um clima descontraído que facilitou a interação entre os participantes. Parabéns aos palestrantes e organizadores: <a href="http://www.sharepointbrasil.net/default.aspx" target="_blank">Helio Sá Moreira</a>, <a href="http://blogs.msdn.com/rodolforoim/" target="_blank">Rodolfo Roim</a> e  <a href="http://mgtcbs.spaces.live.com/" target="_blank">Thiago Cruz Soares</a>!</p>
<p>Agora é só aguardar pela versão definitiva do Sharepoint e do Office pro ano que vem&#8230; <span style="background-color: #ffffff;">por enquanto, bom trabalho e bons estudos!</span></p>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/sharepoint-brasil-summit-2009/feed</wfw:commentRss>
		<slash:comments>0</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[Vida Real]]></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 de uma base de dados SQL Server e precisa restaurá-lo pra trabalhar em cima dele. [...]]]></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>
	</channel>
</rss>
