<?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; Sql Server</title>
	<atom:link href="http://silasmendes.com/dba/tag/sql-server/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>Seu banco de dados na nuvem! O que mudou?</title>
		<link>http://silasmendes.com/dba/sql-azure-o-que-mudou</link>
		<comments>http://silasmendes.com/dba/sql-azure-o-que-mudou#comments</comments>
		<pubDate>Tue, 10 Apr 2012 12:53:52 +0000</pubDate>
		<dc:creator>Silas Mendes</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[Vida Real]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[nuvem]]></category>
		<category><![CDATA[sql azure]]></category>
		<category><![CDATA[Sql Server]]></category>
		<category><![CDATA[T-SQL]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=1040</guid>
		<description><![CDATA[Hoje vamos “falar” um pouco sobre o SQL Azure; um SQL Server apto a gerenciar seu banco de dados na nuvem. A idéia do SQL Azure parte do mesmo princípio de outras soluções na nuvem: você paga pelo que usa, &#8230; <a href="http://silasmendes.com/dba/sql-azure-o-que-mudou">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h4>Hoje vamos “falar” um pouco sobre o SQL Azure; um SQL Server apto a gerenciar seu banco de dados na nuvem.</h4>
<h4>A idéia do SQL Azure parte do mesmo princípio de outras soluções na nuvem: você paga pelo que usa, tem alta disponibilidade desde planos mais básicos e reduz (ao menos teoricamente) custos com gerenciamento&#8230; mas tudo isso já foi abordado no <em>post</em> anterior, portanto, aqui focaremos nas principais características do SQL Azure e suas diferenças comparadas à versão stand-alone que instalamos em nossos servidores.</h4>
<h4><a href="http://silasmendes.com/dba/wp-content/uploads/2012/04/image_thumb.png"><img class="size-medium wp-image-1056 aligncenter" title="image_thumb" src="http://silasmendes.com/dba/wp-content/uploads/2012/04/image_thumb-300x192.png" alt="" width="300" height="192" /></a></h4>
<h4><strong><em>Transparência</em></strong></h4>
<h4>Em primeiro lugar, é preciso entender que como as demais soluções na nuvem, a administração do SQL Azure é <em>muito</em> transparente para o usuário. Se hoje, você DBA se preocupa com  as questões físicas da sua instância, como a localização dos seus datafiles, tamanho dos arquivos de log, rotinas de backup, recovery model, atualização de service packs, etc&#8230; esqueça. Tudo isso é abstraído no SQL Azure.</h4>
<h4>Comandos como <span style="color: #0000ff;">xp_cmdshell</span>, <span style="color: #0000ff;">backup database</span>, <span style="color: #0000ff;">restore database</span> não são suportados pelo SQL Azure.</h4>
<h4><strong>Bases de dados diferentes<br />
</strong></h4>
<h4>Uma mudança significante que pode afetar a forma como trabalhamos com o SQL Server é que no SQL Azure  não podemos realizar operações entre bases de dados diferentes; isso se aplica desde consultas, até cenários de replicação, database snapshot, mirroring e etc.</h4>
<h4><strong>Bancos de sistemas</strong></h4>
<h4>Outra coisa que você sentirá falta: o SQL Azure não expõe todas as bases de dados de sistema (model, tempdb, etc). A única exposta é a master, mas ela não tem exatamente o mesmo papel da master nas versões <em>stand-alone</em> e mesmo sendo o administrador da instância, não é possível criar objetos na master do SQL Azure.</h4>
<h4><strong>Segurança</strong></h4>
<h4>Na segurança, justamente por seu banco de dados estar na nuvem, não existe a opção de <em>Windows Authentication</em>; aqui você utilizará somente o <em>SQL Server authentication</em>.</h4>
<h4>Outras opções de segurança foram adicionadas para você administrar seu ambiente na nuvem. Você poderá, por exemplo, definir uma faixa de IPs que terão permissão para acessar sua instância.</h4>
<h4>Para o gerenciamento de logins utilizamos o <em>Azure Management Portal</em>. No Management Studio não temos mais interface para esta finalidade (mas ainda podemos mante-los via script).</h4>
<h4><strong>Desenvolvimento</strong></h4>
<h4>Para o desenvolvedor T-SQL não existem mudanças drásticas. Stored procedures, triggers, funções, transações, índices e etc são plenamente suportados.</h4>
<h4>Uma das principais mudanças é que nesta edição não é possível criar tabela temporária global. Consultas distribuídas, CLR, service broker também não são suportados.</h4>
<h4>Para ver uma lista completa do que não é suportado, consulte este <a href="http://msdn.microsoft.com/en-us/library/windowsazure/ee336250.aspx" target="_blank">link</a>.</h4>
<h4><strong>Armazenamento</strong></h4>
<h4>Atualmente o SQL Azure em sua ediçao <em>Web Edition</em> permite armazenarmos até 5 GB; na ediçao <em>Business</em> o limite de armazenamento chega a 150 GB (percebemos aqui uma certa limitaçao que pode inviabilizar algumas soluçoes, mas certamente esta é uma limitaçao temporária).</h4>
<h4><strong>Resumindo&#8230;</strong></h4>
<h4>Pensar num SQL Server onde não temos sequer a opção de fazer backup parece assustador; mas é preciso compreender que<a href="http://silasmendes.com/dba/wp-content/uploads/2012/04/images.jpg"><img class="alignright size-full wp-image-1067" title="images" src="http://silasmendes.com/dba/wp-content/uploads/2012/04/images.jpg" alt="" width="158" height="158" /></a> este é o ponto focal do Azure: abstrair os pontos de administração!</h4>
<h4>Vimos aqui algumas das principais diferenças entre o SQL Azure e o SQL Server que instalamos em nossos servidores locais (stand-alone).</h4>
<h4>Nos próximos posts darei dicas de como começar a utilizar o SQL Azure e sobre como planejar a migraçao do seu banco de dados para a nuvem.</h4>
<h4>Por enquanto continuamos aqui, com a cabeça nas nuvens e os pés no chão ;)</h4>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/sql-azure-o-que-mudou/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Você na nuvem!</title>
		<link>http://silasmendes.com/dba/voce-na-nuvem</link>
		<comments>http://silasmendes.com/dba/voce-na-nuvem#comments</comments>
		<pubDate>Wed, 28 Mar 2012 01:02:48 +0000</pubDate>
		<dc:creator>Silas Mendes</dc:creator>
				<category><![CDATA[Vida Real]]></category>
		<category><![CDATA[azure]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[nuvem]]></category>
		<category><![CDATA[Sql Server]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=1013</guid>
		<description><![CDATA[Em meados de 2007 comecei a ouvir de forma recorrente a palavra “nuvem” invadir os círculos de bate papo da turma de TI. A idéia da nuvem era fortemente baseada no conceito de computação em grade, onde inúmeros computadores eram &#8230; <a href="http://silasmendes.com/dba/voce-na-nuvem">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h4><a href="http://silasmendes.com/dba/wp-content/uploads/2012/03/clouddw.jpg"><img class="alignleft size-full wp-image-1014" title="clouddw" src="http://silasmendes.com/dba/wp-content/uploads/2012/03/clouddw.jpg" alt="" width="226" height="269" /></a>Em meados de 2007 comecei a ouvir de forma recorrente a palavra “nuvem” invadir os círculos de bate papo da turma de TI. A idéia da nuvem era fortemente baseada no conceito de computação em grade, onde inúmeros computadores eram interligados e juntos somavam uma quantidade abundante de recursos computacionais. Grandes empresas como Amazon, Google e Microsoft começaram a explorar o lado comercial desta idéia, vendendo seus recursos para empresas que desejavam hospedar suas aplicações remotamente. O termo nuvem foi adotado porque o acesso a estes super conjunto de computadores se dá pela internet e para o cliente não importa necessariamente qual hardware está suportando esta estrutura; a idéia é justamente deixar essa infraestrutura transparente para os clientes.</h4>
<h4>Nesta epoca diversos “evangelistas” pregavam de forma veemente que dentro de poucos anos toda a estrutura de servidores das empresas seria descartada e tudo seria transportado para a nuvem: ERPs, CRMs, servidores de e-mail, bancos de dados&#8230; tudo estaria na nuvem. Isso levantou muita polêmica, mas a idéia tinha suas vantagens pois com isso as empresas teriam mais foco em seu próprio negócio e não teriam gastos diretos com manutenção de hardware, software, licenças, salas refrigeradas, consumo de energia e etc.</h4>
<h4>Participei desses círculos de forma bem neutra, pois algo que eu estranhava nesse cenário é que tudo dependia de um bom <em>link</em> com a internet e justamente, <a title="Pane na Telefônica" href="http://www.estadao.com.br/noticias/cidades,pane-na-telefonica-derruba-web-e-para-servicos-pelo-estado,200088,0.htm" target="_blank">em Julho de 2008 presenciamos uma pane na Telefônica </a>que deixou São Paulo desconectado; grandes empresas e inclusive o orgãos do governo ficaram sem <em>link</em> por horas e o prejuízo foi grande.</h4>
<h4>Num cenário desses, qual diretor de TI apostaria na hospedagem de seus serviços na nuvem, sendo que a depêndencia com um <em>link</em> é vital?!</h4>
<h4>De lá pra cá passaram-se 4 anos. O assunto “nuvem” ainda continua na crista da onda, mas já não de forma tão febril quanto antes. Mas o que tenho observado é que, sim, estamos aos poucos indo pra nuvem e a mudança está começando por nós, <em><strong>usuários</strong></em>.</h4>
<h4><a href="http://silasmendes.com/dba/wp-content/uploads/2012/03/sync-dropbox.jpg"><img class="alignleft size-medium wp-image-1015" title="sync-dropbox" src="http://silasmendes.com/dba/wp-content/uploads/2012/03/sync-dropbox-300x206.jpg" alt="" width="300" height="206" /></a>Hoje a agenda e fotos do meu celular estão sincronizados com a nuvem. Quando trocar de aparelho bastará associar meu login para ter tudo de volta. Atualmente também hospedo meus principais arquivos no DropBox, aplicativo onde armazeno meus arquivos na nuvem e sincronizo uma cópia em todos os PCs que possuo, inclusive tablets e celulares. HDs <strong><em>não</em></strong> são confiáveis, de uma hora pra outra dão um problema e te deixam na mão, então porque não deixar tudo na nuvem?</h4>
<h4>Por U$ 50,00 anuais tenho 200 GB de espaço no Google para armazenar meus vídeos e fotos. Isso mitiga todos os riscos? Não. É claro que o Google e o DropBox podem perder meus arquivos, mas o risco não é comparado ao ter meus arquivos num único HD. Essas empresas armazenam nossos arquivos em <em>datacenters</em> espalhados pelo mundo, com profissionais dedicados 24&#215;7 na manutenção destes ambientes.</h4>
<h4>Mas quais as vantagens da nuvem para nós usuarios, além da alta disponibilidade e a possibilidade de acessar seus arquivos de qualquer parte do mundo? Uma vantagem interessante é que você paga pelo que usa; se hoje 200 GB é muito para armazenar todas as suas fotos, então contrate 20 GB iniciais e pague somente U$ 5,00 anuais. Agora pense o quanto isto pode ser interessante pra sua empresa. Imagine aqueles períodos sazonais onde sua empresa tem grande demanda comercial e a necessidade de consumo de recursos computacionais é maior?!</h4>
<h4>Enfim; para essa coisa virar ainda é necessário muito investimento em infraestrutura no Brasil e quando isso se concretizar, eu acredito sim, que nós (empresas e usuários) estaremos nas nuvens!</h4>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/voce-na-nuvem/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Teched 2011</title>
		<link>http://silasmendes.com/dba/teched-2011</link>
		<comments>http://silasmendes.com/dba/teched-2011#comments</comments>
		<pubDate>Thu, 06 Oct 2011 02:00:45 +0000</pubDate>
		<dc:creator>Silas Mendes</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[SQL SERVER 2008]]></category>
		<category><![CDATA[SQL SERVER 2008 R2]]></category>
		<category><![CDATA[Vida Real]]></category>
		<category><![CDATA[brasil]]></category>
		<category><![CDATA[denali]]></category>
		<category><![CDATA[evento]]></category>
		<category><![CDATA[Sql Server]]></category>
		<category><![CDATA[TechEd]]></category>
		<category><![CDATA[tecnologia]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=971</guid>
		<description><![CDATA[Semana passada rolou o Teched 2011 e eu estive lá durante os 2 dias do evento. Reencontrei muitos amigos e conheci outros que só conhecia da comunidade virtual. Show de bola, fortalecendo o networking :) Assisti 8 trilhas e acho &#8230; <a href="http://silasmendes.com/dba/teched-2011">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://silasmendes.com/dba/wp-content/uploads/2011/10/logo-teched-2011.png"><img class="alignleft size-full wp-image-979" title="logo-teched-2011" src="http://silasmendes.com/dba/wp-content/uploads/2011/10/logo-teched-2011.png" alt="" width="265" height="121" /></a>Semana passada rolou o Teched 2011 e eu estive lá durante os 2 dias do evento. Reencontrei muitos amigos e conheci outros que só conhecia da comunidade virtual. Show de bola, fortalecendo o <em>networking</em> :)</p>
<p>Assisti 8 trilhas e acho interessante tecer minhas considerações:</p>
<p><strong>General Session</strong></p>
<p>Essa foi a trilha de abertura do evento e abordou em resumo todas as novidades do mundo Microsoft para os próximos meses. Gostei. Teve um toque de show com direito a discurso do presidente da Microsoft Brasil, algumas demos apresentando o System Center 2012, Windows Phone 7, SQL Server Denali, Office 365, Cloud, Cloud, Cloud, Cloud (isso mesmo; acho que ouvi essa palavra umas 100 vezes, risos) e etc.</p>
<p>Em especial gostei:</p>
<ul>
<li> da notícia da fabricação do XBOX no Brasil;</li>
<li>da apresentação do Windows Phone e suas aplicações;</li>
<li>do System Center interagindo com dispositivos Android e iOS;</li>
<li>dos novos relatórios (super dinâmicos) do Reporting Services sendo exibidos/editados no browser (via SharePoint).</li>
</ul>
<p>Achei esta sessão um pouco longa; durou cerca de 3 horas&#8230; mas vamos falar um pouco das outras palestras:</p>
<p><strong>O que há de novo no Microsoft SQL Server Code-Named “Denali”</strong></p>
<p>Foi a segunda palestra que assisti e sinceramente, foi decepcionante. Não posso avaliar o conhecimento dos palestrantes, mas o conteúdo e a apresentação estavam muito aquém do que se espera de um evento desse porte. Sai dessa trilha na esperança de que o nível melhorasse nas próximas&#8230; e melhorou.</p>
<p><strong>Como montar um ambiente de alta disponibilidade com o Hyper-V</strong></p>
<p>O palestrante Rodrigo Immaginario mandou muito bem nessa sessão, abordando as vantagens e desvantagens das diferentes formas de implementação de um cluster + Hyper-V. O cara acessou o ambiente de produção dele no Espírito Santo e fez um <em>live migration</em> “no quente”. Gostei.</p>
<p><strong>Microsoft SQL Server Code-Named “Denali” AlwaysOn: Introduzindo a nova geração de soluções para alta disponibilidade</strong></p>
<p>Uma das melhores trilhas que assisti&#8230; Nilton Pinheiro fez uma  apresentação impecável da nova <em>feature</em> de alta disponibilidade do Denali: <strong><em>AlwaysOn</em></strong>. Foi nesta trilha que descobri algo muito interessante no Denali: agora poderemos instalar o SQL Server num Windows Server Core! Bacana!</p>
<p>No 2º dia assisti as seguintes trilhas:</p>
<p><strong>T-SQL: o que você deve saber do Microsoft SQL Server 2008 R2 e as novidades do SQL Server Code-Named “Denali”</strong></p>
<p>Excelente trilha com o Gustavo Maia. O cara apresentou com muita propriedade as novidades da linguagem T-SQL no SQL Server 2008 R2 e Denali, fazendo comparativos entre SGBDs, apresentando dados históricos, e etc. Enfim, essa palestra foi muito bacana porque eu ainda não tinha parado pra olhar as novidades do T-SQL no Denali; somou muito!</p>
<p><strong>Boas práticas para o SQL Server em ambientes virtualizados</strong></p>
<p>O palestrante Airton Leal mandou muito bem; era nítido o domínio do cara nas tecnologias de virtualização e ele deu dicas preciosíssimas para quem quer trabalhar com ambiente virtualizado. Uma informação muito interessante que ele disponibilizou: se você tem um sistema rodando numa maquina física e deseja transporta-lo para uma maquina virtual, esteja ciente que o <em>overhead </em>mínimo no desempenho será de 12%. Essa informação foi bem bacana, porque muita gente defende que não tem custo nenhum; afirmação que para mim sempre pareceu bem absurda. O único ponto que achei muito estranho nessa palestra: o título! Tudo era focado em boas práticas para ambientes virtualizados, porém, nada focado em SQL Server. Mesmo assim, somou!</p>
<p><strong>Cenários de otimização com o SQL Server “Denali” e 2008</strong></p>
<p>Trilha de alto nível técnico com o Luti e Fabiano Amorim&#8230; os caras deram dicas preciosas de otimização, todas muito bem argumentadas e demonstradas. Se eu não tivesse feito o curso de <em>internals</em> e de índices (com o Luti), diria que essa teria sido, para mim, a melhor trilha do evento, pois em 1 hora, os caras deram informações que você não encontra na maioria dos livros de <em>tunning</em>. Muito bom mesmo!</p>
<p><strong>Raio-X do SQL Server: Arquitetura interna do gerenciador de banco de dados</strong></p>
<p>Outra trilha fantástica! Inicialmente não tinha me programado para assistir essa palestra, porque fiz o curso de internals recentemente; mas mudei os planos mais na curiosidade e fui surpreendido pela apresentação do Catae e do Felipe Pimenta&#8230; em 1 hora os caras conseguiram resumir e discorrer sobre os principais pilares da arquitetura do SQL Server. Muita gente saiu dessa trilha com o cérebro fritando, mas os palestrantes foram ótimos e se esforçaram em serem o mais didático possível. Fechei o Teched com 2 trilhas nível 400 de verdade :)</p>
<p><strong>Conclusão</strong></p>
<p>O evento foi muito bom, com excelente organização e pontualidade. A maioria dos palestrantes eram “feras” e isso enriqueceu muito a experiência. Agora a pergunta que muita gente me faz: “voltaria ao evento em 2012?”. E eu respondo: o evento é muito bom, porém ainda acho que não vale o preço (principalmente quando o profissional paga do próprio bolso, risos). Enfim, poderiam dar uma melhorada no valor; ou quem sabe, no próximo ano, meu cliente resolve pagar essa conta; afinal ele é um dos principais beneficiados com esse investimento :D</p>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/teched-2011/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>O que é SQL?</title>
		<link>http://silasmendes.com/dba/o-que-e-sql</link>
		<comments>http://silasmendes.com/dba/o-que-e-sql#comments</comments>
		<pubDate>Tue, 26 Jul 2011 14:52:09 +0000</pubDate>
		<dc:creator>Silas Mendes</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[ORACLE]]></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[banco de dados relacional]]></category>
		<category><![CDATA[db2]]></category>
		<category><![CDATA[gerenciador de banco de dados]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[plsql]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[sgbd]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Sql Server]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=949</guid>
		<description><![CDATA[Pra começar você precisa saber que SQL não é um banco de dados; SQL é um idioma (entre especialistas costumamos substituir o termo “idioma” por “linguagem”). A sigla SQL significa Structured Query Language; em português: linguagem de consulta estruturada. Destaquei &#8230; <a href="http://silasmendes.com/dba/o-que-e-sql">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Pra começar você precisa saber que SQL não é um banco de dados; SQL é um idioma (entre especialistas costumamos substituir o termo “idioma” por “linguagem”). A sigla SQL significa <em><strong>Structured Query Language</strong></em>; em português: linguagem de <span style="color: #ff6600;"><strong>consulta </strong></span>estruturada. Destaquei o “consulta” porque o foco dela é justamente isso: consultar!</p>
<p><em><a href="http://silasmendes.com/dba/wp-content/uploads/2011/07/torre-de-babel.jpg"><img class="alignleft size-full wp-image-950" title="torre-de-babel" src="http://silasmendes.com/dba/wp-content/uploads/2011/07/torre-de-babel.jpg" alt="" width="260" height="401" /></a></em>Os bancos de dados (ou gerenciadores de bancos de dados) nasceram antes da linguagem SQL e cada qual tinha sua própria linguagem de consulta. Logo os usuários e fabricantes notaram que essa torre de babel não era interessante e optaram pela criação de um único idioma para consultar bancos de dados relacionais (em outra oportunidade falaremos sobre os bancos dimensionais). O órgão <em>American National</em> <em>Standards Institute </em>(ANSI) ficou responsável pela padronização desta linguagem e de tempos em tempos realiza encontros entre fabricantes para discutir a linguagem SQL e propor melhorias; no entanto esta padronização não impede que cada fabricante personalize a linguagem SQL para atender suas necessidades, e é aí que surgem os dialetos.  Por exemplo, o &#8220;dialeto&#8221; do gerenciador de banco de dados Oracle é o PL/SQL; o do SQL Server é o T-SQL (transact SQL) e etc.</p>
<p><span style="color: #ff0000;">Agora é importante que você não confunda a linguagem SQL com gerenciadores de banco de dados! Isso é um erro muito comum!</span></p>
<p><span style="color: #ff0000;"> </span></p>
<p>Por exemplo, o gerenciador de banco de dados Microsoft SQL Server (como o nome já diz), é um programa que gerencia bancos de dados. A arquitetura dos sistemas gerenciadores de bancos de dados (SGBDs) é definida de forma que os dados possam estar sempre consistentes e que sejam recuperados da forma mais rápida possível! Digamos que estes são itens de série de qualquer SGBD. Para tornar os gerenciadores de bancos de dados ainda mais atraentes, os fabricantes adicionam outras inúmeras funcionalidades para facilitar o trabalho dos DBAs, aumentar a segurança, a disponibilidade e etc.</p>
<p>Hoje existem diversos gerenciadores de <a href="http://silasmendes.com/dba/wp-content/uploads/2011/07/sgbds.png"><img class="size-medium wp-image-955 alignright" title="sgbds" src="http://silasmendes.com/dba/wp-content/uploads/2011/07/sgbds-300x205.png" alt="" width="300" height="205" /></a>bancos de dados disponíveis no mercado, como o Oracle, o Microsoft SQL Server, o PostgreSQL, entre outros. <strong>Todos utilizam a linguagem SQL para consultar dados</strong>.</p>
<p>A grande dúvida que paira na cabeça de alguns profissionais de TI é: qual o melhor banco de dados? SQL Server? Oracle?! DB2?</p>
<p>O que eu digo é o seguinte: o melhor gerenciador de banco de dados é aquele que atende adequadamente o seu negócio. É como comprar um carro: você compraria uma Ferrari para fazer <em>rally</em>?! Compraria um Fusca para fazer uma longa viagem pelo Brasil?</p>
<p><strong>Conclusão</strong></p>
<p>SQL é uma linguagem de consulta a bancos de dados relacionais. No mercado atual existem inúmeros sistemas gerenciadores de bancos de dados relacionais (comumente chamados apenas pela sigla SGBD); podemos citar como exemplo o Oracle, Microsoft SQL Server, DB2, etc. Estes gerenciadores de bancos de dados utilizam a linguagem SQL para consultar os dados; porém, adicionam à esta linguagem soluções para atender suas particularidades e aí nascem dialetos como o PL/SQL, PL/pgSQL e o T-SQL.</p>
<p>Nos próximos posts falaremos mais sobre a linguagem SQL e os gerenciadores de bancos de dados.</p>
<p>Para conhecer mais detalhes sobre a linguagem SQL, <a href="http://silasmendes.com/dba/dml-ddl-o-que-e-isso" target="_blank">dê uma olhada nesse post</a> e fique familiarizado com outras siglas populares no mundo SQL como: DDL e DML!</p>
<p>Até +</p>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/o-que-e-sql/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<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>Solucionando usuários orfãos</title>
		<link>http://silasmendes.com/dba/resolvendo-usuarios-orfaos</link>
		<comments>http://silasmendes.com/dba/resolvendo-usuarios-orfaos#comments</comments>
		<pubDate>Tue, 18 Jan 2011 09:44:38 +0000</pubDate>
		<dc:creator>Silas Mendes</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Erros $#$%!]]></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[duplicado]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[orfão]]></category>
		<category><![CDATA[sp_change_users_login]]></category>
		<category><![CDATA[Sql Server]]></category>
		<category><![CDATA[usuário]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=838</guid>
		<description><![CDATA[Um problema comum: Você restaura um backup numa nova instância e ao tentar conceder as permissões para seus usuários encontra o seguinte erro: User, group, or role &#8216;nome_do_usuario&#8216; already exists in the current database. (No fim deste post está disponível um &#8230; <a href="http://silasmendes.com/dba/resolvendo-usuarios-orfaos">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Um problema comum:</p>
<p>Você restaura um backup numa nova instância e ao tentar conceder as permissões para seus usuários encontra o seguinte erro:</p>
<p><span style="color: #ff0000;">User, group, or role &#8216;<em>nome_do_usuario</em>&#8216; already exists in the current database.</span></p>
<blockquote>
<h5><strong><em>(No fim deste post está disponível um arquivo contendo base e scripts utilizados neste cenário.)</em></strong></h5>
</blockquote>
<p>Ou seja, o login já existe na instância e ao tentar defini-lo como usuário da base, o SQL reclama que ele <span style="text-decoration: underline;"><em>já é</em></span> um usuário da base de dados; no entanto, ao tentar conectar no banco com este usuário o SQL Server adverte que o mesmo não tem permissões para se conectar:</p>
<div id="_mcePaste"><span style="color: #ff0000;">Msg 916, Level 14, State 1, Line 1</span></div>
<div id="_mcePaste"><span style="color: #ff0000;">The server principal &#8220;<em>nome_do_usuario</em>&#8221; is not able to access the database &#8220;<em>nome_do_banco</em>&#8221; under the current security context.</span></div>
<p>&#8230; assim não é possível conceder permissões ao usuário e nem utilizá-lo.</p>
<p><img class="alignright size-full wp-image-843" title="orfao_" src="http://silasmendes.com/dba/wp-content/uploads/2011/01/orfao_.jpg" alt="" width="186" height="285" /></p>
<p>Normalmente este problema ocorre porque o login em questão já era usuário da base de dados em sua instância de origem. Ao restaurar o backup em outra instância, onde o mesmo login existe, o SQL Server não estabele um link automático entre o login pré-existente e o usuário que veio junto com base restaurada; assim surgem os <strong>usuários órfãos</strong>.</p>
<p>Veja que é um problema muito comum, no entanto, muitas pessoas tentam resolve-lo apagando o usuário da base e recriando novamente a partir do login; no entanto, ao fazer isto, perceba que perdemos todas as configurações atribuídas àquele usuário na base determinada, como permissões e etc.</p>
<p>Para solucionar este problema adequadamente utilizamos o procedimento: <strong>sp_change_users_login</strong></p>
<p>Inicialmente podemos executar a procedure (dentro da base restaurada) com o seguinte parâmetro:</p>
<pre class="brush: sql; title: ; notranslate">
EXEC sp_change_users_login 'Report';
</pre>
<p>Com este parâmetro o procedimento irá mostrar todos os usuários órfãos da sua base; ou seja, usuários que existem na sua base de dados, mas que não possuem um login correspondente:</p>
<p><a href="http://silasmendes.com/dba/wp-content/uploads/2011/01/post_orfao.png"><img class="aligncenter size-full wp-image-852" title="post_orfao" src="http://silasmendes.com/dba/wp-content/uploads/2011/01/post_orfao.png" alt="" width="336" height="70" /></a></p>
<p>Para solucionar efetivamente o problema, executamos a procedure com diferentes parâmetros. No exemplo abaixo, executamos a procedure passando como parâmetro o nome do usuário órfão e o login correspondente. Ao executá-lo, o SQL Server estabelece uma relação entre ambos:</p>
<pre class="brush: sql; title: ; notranslate">
EXEC sp_change_users_login
	'Update_One',
	'usuario42', 'usuario42';
</pre>
<p>Note que <strong>o nome do login e do usuário não precisam ser iguais</strong>, no entanto é muito comum utilizamos o mesmo nome para logins e usuários, então para abreviar a solução podemos utilizar somente:</p>
<pre class="brush: sql; title: ; notranslate">
EXEC sp_change_users_login 'Auto_Fix', 'usuario42';
</pre>
<p>Assim o SQL Server entende que a relação deverá ocorrer entre um usuário e um login de mesmo nome.</p>
<p>Este procedimento pode ser utilizado também quando você possuir um usuário, mas ainda não possuir um login correspondente criado; assim em um único comando é possível cadastrar o novo login, atribuir sua senha  e estabeler a relação entre eles; veja o exemplo:</p>
<pre class="brush: sql; title: ; notranslate">
EXEC sp_change_users_login
	'Auto_Fix',
	'usuario42', NULL,
	'@#mochil3ir0'; -- senha
</pre>
<p><strong>Conclusão</strong></p>
<p>Neste post entendemos o que são usuários orfãos e como estabeler vínculos entre logins e usuários de banco de dados utilizando o procedimento <strong>sp_change_users_login</strong>. Este procedimento tem diferentes comportamentos de acordo com os parâmetros passados. Utilizar este procedimento simplifica a configuração da sua base de dados e mantém todas as características de seus usuários previamente configuradas.</p>
<p>Para simular este erro e sua solução, <a href="http://silasmendes.com/dba/wp-content/uploads/2011/01/EXEMPLO_usuário_orfão.zip">baixe este arquivo</a> contendo a base e script do cenário.</p>
<p>Até +</p>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/resolvendo-usuarios-orfaos/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>BEGIN TRANSACTION 2011</title>
		<link>http://silasmendes.com/dba/begin-transaction-2011</link>
		<comments>http://silasmendes.com/dba/begin-transaction-2011#comments</comments>
		<pubDate>Thu, 13 Jan 2011 12:19:24 +0000</pubDate>
		<dc:creator>Silas Mendes</dc:creator>
				<category><![CDATA[Vida Real]]></category>
		<category><![CDATA[ano novo]]></category>
		<category><![CDATA[MCITP]]></category>
		<category><![CDATA[ocp]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Sql Server]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=773</guid>
		<description><![CDATA[Um belo ano terminou e agora 2011 começa efetivamente pra mim. E já começou em ritmo alucinante com o nascimento da minha filha (vide post anterior); sem dúvidas uma experiência marcante, sensacional e indescritível. Apesar das noites sem sono (sim, &#8230; <a href="http://silasmendes.com/dba/begin-transaction-2011">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://silasmendes.com/dba/wp-content/uploads/2011/01/Feliz-2011-Ano-Novo-7.jpg"><img class="alignleft size-medium wp-image-777" title="Feliz-2011" src="http://silasmendes.com/dba/wp-content/uploads/2011/01/Feliz-2011-Ano-Novo-7-300x233.jpg" alt="" width="300" height="233" /></a>Um belo ano terminou e agora 2011 começa efetivamente pra mim. E já começou em ritmo alucinante com o nascimento da minha filha (<a href="http://silasmendes.com/dba/hidaddy" target="_blank">vide <em>post</em> anterior</a>); sem dúvidas uma experiência marcante, sensacional e indescritível. Apesar das noites sem sono (sim, já estou passando por essa fase, risos) a sensação é de que um evento que foge a nossa razão está ocorrendo a cada momento&#8230; e a gente percebe que tudo irá mudar daqui pra frente, e isso é <strong><em>fantástico</em></strong>!</p>
<p>Mas enfim, falando um pouco sobre profissão e bancos de dados, posso dizer que 2010 foi um ano memorável. Adquiri muito conhecimento, tanto em SQL Server como em Oracle. O SQL Server continua a minha principal plataforma de banco de dados, mas foi interessante estender o olhar para outro gerenciador e notar as diferenças, pontos fortes e fracos de ambos&#8230; percebi que é muito importante ter referências; afinal quando temos um único ponto de vista, não podemos falar com propriedade de outros&#8230;</p>
<p>Além disso entrei num projeto onde estou rodeado de uma dezena de DBAs. Além de excelentes contatos (risos), conquistei muitos amigos. Um ambiente assim é um sonho pra qualquer pessoa que deseja se desenvolver ainda mais. Implantamos a primeira parte de um sistema em produção, o processo exigiu muito esforço mas entrou no ar e foi gratificante.</p>
<p>Aqui no blog foram aproximadamente 3000 visitas por mês, pode parecer pouco, mas pra quem começou sem qualquer pretensão é um belo número!</p>
<p>Mas 2011 promete muito mais&#8230;</p>
<p>Pretendo escrever um pouco mais por aqui, tentando manter uma freqüência de pelo menos 2 posts por mês&#8230; aqui no projeto teremos o desafio de implantar a segunda parte do sistema em produção&#8230; último semestre da faculdade, junto com apresentação do TCC&#8230; quero adquirir mais uns MCITPs (e quem sabe um OCA) e enfim&#8230;</p>
<p>Se parar pra pensar é muita coisa pra fazer em 300 e poucos dias&#8230; mas vamos lá! Saúde e entusiasmo pra todos nós!</p>
<pre class="brush: sql; title: ; notranslate">
BEGIN TRANSACTION 2011
</pre>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/begin-transaction-2011/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ho Ho Ho!!!</title>
		<link>http://silasmendes.com/dba/ho-ho-ho</link>
		<comments>http://silasmendes.com/dba/ho-ho-ho#comments</comments>
		<pubDate>Fri, 24 Dec 2010 11:02:58 +0000</pubDate>
		<dc:creator>Silas Mendes</dc:creator>
				<category><![CDATA[Bla bla bla]]></category>
		<category><![CDATA[Vida Real]]></category>
		<category><![CDATA[boas festas]]></category>
		<category><![CDATA[felicidades]]></category>
		<category><![CDATA[feliz natal]]></category>
		<category><![CDATA[print]]></category>
		<category><![CDATA[Sql Server]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=755</guid>
		<description><![CDATA[:))))]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;"> </span></p>
<pre class="brush: sql; title: ; notranslate">
USE BOAS_FESTAS
GO
PRINT 'FELIZ NATAL!!!!!!!'
GO
</pre>
<p>:))))</p>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/ho-ho-ho/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Movimentando arquivos da base de dados</title>
		<link>http://silasmendes.com/dba/movimentando-arquivos</link>
		<comments>http://silasmendes.com/dba/movimentando-arquivos#comments</comments>
		<pubDate>Mon, 20 Dec 2010 21:15:43 +0000</pubDate>
		<dc:creator>Silas Mendes</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Vida Real]]></category>
		<category><![CDATA[ALTER DATABASE]]></category>
		<category><![CDATA[arquivo]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[datafile]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[move]]></category>
		<category><![CDATA[movimentar]]></category>
		<category><![CDATA[offline]]></category>
		<category><![CDATA[online]]></category>
		<category><![CDATA[Sql Server]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=743</guid>
		<description><![CDATA[Uma das atividades que pontuam a rotina de um DBA é a movimentação de arquivos de bancos de dados; normalmente resultado de falta de espaço em disco, mudança de arquitetura, otimização e etc. Nosso cenário: Os arquivos de dados e &#8230; <a href="http://silasmendes.com/dba/movimentando-arquivos">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Uma das atividades que pontuam a rotina de um DBA é a movimentação de arquivos de bancos de dados; normalmente resultado de falta de espaço em disco, mudança de arquitetura, otimização e etc.</p>
<p><strong>Nosso cenário</strong>: Os arquivos de dados e log da base de dados <strong>MoveArquivo</strong> estão no mesmo disco. Para otimizar a performance decidimos movimentar o arquivo de log para outro disco.</p>
<p>Existem diversos meios de realizar esta tarefa, a seguir iremos analisar uma delas (e a que particularmente acho mais prática):</p>
<p><strong>“Mão na massa”</strong></p>
<p>Primeiro, precisamos ter algumas informações em mãos; por exemplo, o nome lógico do arquivo que será alterado e o local atual do arquivo de log de nossa base de dados:</p>
<p>Para isso podemos utilizar o comando <strong>sp_helpdb</strong>:</p>
<p><a href="http://silasmendes.com/dba/wp-content/uploads/2010/12/01_move_arquivo1.jpg"><img class="aligncenter size-full wp-image-745" title="01_move_arquivo" src="http://silasmendes.com/dba/wp-content/uploads/2010/12/01_move_arquivo1.jpg" alt="" width="708" height="60" /></a></p>
<p>Ok; já sabemos onde está nosso arquivo de log. Agora precisamos alterar este endereço e para isto utilizamos o seguinte comando:</p>
<pre class="brush: sql; title: ; notranslate">
USE MASTER
GO
ALTER DATABASE MoveArquivo
MODIFY FILE (NAME = 'MoveArquivo_log', FILENAME = 'E:\SQLDbs\Log\MoveArquivo_log.ldf')
GO
</pre>
<p>Após execução do comando temos a seguinte mensagem:</p>
<p><span style="color: #ff0000;">The file &#8220;MoveArquivo_log&#8221; has been modified in the system catalog. <strong>The new path will be used the next time the database is started.</strong></span><strong></strong></p>
<p>Temos então, numa tradução livre, o alerta: <em>“O novo caminho só será utilizado após reinicialização da base”</em>. Então fique atento! Este comando não alterou efetivamente o endereço físico do arquivo; para concluir a operação precisamos reiniciar a base.</p>
<p>Para não afetarmos a operação dos outros bancos da instância e para reduzirmos o tempo de parada, não vamos mexer com o serviço do SQL Server; vamos apenas alterar o estado da base de dados, deixando-a offline:</p>
<pre class="brush: sql; title: ; notranslate">
ALTER DATABASE MoveArquivo
SET offline
GO
</pre>
<p>Após execução deste comando a base fica indisponível para qualquer usuário e agora podemos copiar fisicamente o arquivo de log para seu novo endereço. Neste momento, através de um CTRL + C, CTRL+ V (ou qualquer outro meio de copiar um arquivo no Windows) copiamos o arquivo para seu novo endereço.</p>
<blockquote><p><em>Atenção: tenha certeza de copiar o arquivo para o mesmo endereço informado no primeiro comando ALTER DATABASE.</em></p></blockquote>
<p>Finalizada a cópia, podemos reiniciar nossa base de dados com o seguinte comando:</p>
<pre class="brush: sql; title: ; notranslate">
ALTER DATABASE MoveArquivo
SET online
GO
</pre>
<p>Pronto! Arquivo de log movimentado para novo endereço.</p>
<p>O mesmo procedimento pode ser utilizado para outros tipos de arquivos (como arquivos de dados). Para as bases de sistema (MASTER, TEMPDB, etc) não será possível utilizar a opção SET ONLINE/OFFLINE; neste caso teremos que reiniciar o serviço do SQL Server, afetando a disponibilidade de toda instância.</p>
<p>Até +</p>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/movimentando-arquivos/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Livros</title>
		<link>http://silasmendes.com/dba/livros</link>
		<comments>http://silasmendes.com/dba/livros#comments</comments>
		<pubDate>Mon, 18 Oct 2010 14:30:30 +0000</pubDate>
		<dc:creator>Silas Mendes</dc:creator>
				<category><![CDATA[Bla bla bla]]></category>
		<category><![CDATA[Certificação]]></category>
		<category><![CDATA[livro]]></category>
		<category><![CDATA[MCTS]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Sql Server]]></category>
		<category><![CDATA[vender]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=714</guid>
		<description><![CDATA[Livros são ótimas companhias e se eu pudesse não me desfaria de nenhum&#8230; no entanto meu apartamento anda meio abarrotado :) Estou colocando a venda a preços bem camaradas alguns livros da minha prateleira. Os preços variam de R$ 4,00 &#8230; <a href="http://silasmendes.com/dba/livros">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div>
<p>Livros são ótimas companhias e se eu pudesse não me desfaria de nenhum&#8230; no entanto meu apartamento anda meio abarrotado :)</p>
<p>Estou colocando a venda a preços bem camaradas alguns livros da minha prateleira. Os preços variam de R$ 4,00 a R$ 25,00; a maioria relacionada com bancos de dados.</p>
<p>Se quiser dar uma olhada, <a href="http://lista.mercadolivre.com.br/_CustId_79309905" target="_blank">clique aqui</a> :)</p>
<p>Até +</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/livros/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

