<?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; Restore</title>
	<atom:link href="http://silasmendes.com/dba/tag/restore/feed" rel="self" type="application/rss+xml" />
	<link>http://silasmendes.com/dba</link>
	<description>Tecnologia &#38; Banco de Dados</description>
	<lastBuildDate>Tue, 27 Dec 2011 12:53:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>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 faça este curso. Excelente&#8230; Mas vamos ao foco do nosso post. Durante o curso de [...]]]></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>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 negócio; em alguns ambientes críticos é inadimissível a perda de um minuto de informação, já em outros [...]]]></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 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>

