<?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; prompt DOS</title>
	<atom:link href="http://silasmendes.com/dba/tag/prompt-dos/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>SQL Server via prompt de comando?</title>
		<link>http://silasmendes.com/dba/sql-server-via-prompt</link>
		<comments>http://silasmendes.com/dba/sql-server-via-prompt#comments</comments>
		<pubDate>Tue, 20 Oct 2009 20:30:02 +0000</pubDate>
		<dc:creator>Silas Mendes</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[SQL SERVER 2005]]></category>
		<category><![CDATA[SQL SERVER 2008]]></category>
		<category><![CDATA[SQL SERVER 2008 R2]]></category>
		<category><![CDATA[cmd]]></category>
		<category><![CDATA[consulta metadados]]></category>
		<category><![CDATA[DOS]]></category>
		<category><![CDATA[information_schema]]></category>
		<category><![CDATA[isql]]></category>
		<category><![CDATA[localhost]]></category>
		<category><![CDATA[Management Studio]]></category>
		<category><![CDATA[osql]]></category>
		<category><![CDATA[prompt DOS]]></category>
		<category><![CDATA[Query Analyser]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[sp_readerrorlog]]></category>
		<category><![CDATA[sp_who]]></category>
		<category><![CDATA[sql server 2005]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[sqlcmd]]></category>

		<guid isPermaLink="false">http://silasmendes.com/dba/?p=404</guid>
		<description><![CDATA[Em minha experiência pessoal já vivi uma situação onde durante a atualização do principal sistema da empresa, nosso contato no datacenter reclamou dizendo que não conseguia abrir o Management Studio para executar nossos scripts. A solução mais rápida? Enviei para &#8230; <a href="http://silasmendes.com/dba/sql-server-via-prompt">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Em minha experiência pessoal já vivi uma situação onde durante a atualização do principal sistema da empresa, nosso contato no datacenter reclamou dizendo que não conseguia abrir o <strong>Management Studio</strong> para executar nossos scripts.</p>
<p>A solução mais rápida? Enviei para o datacenter o procedimento de execução dos scripts via <strong>SQLCMD</strong>.</p>
<p>Mas o que é isso?</p>
<p>O SQLCMD é uma ferramenta que você utiliza para acessar instâncias SQL Server via prompt de comando (vulgo DOS). Não existem segredos, uma vez conectado, através de scripts você pode fazer tudo o que faria utilizando o <em>Query Analyser</em> ou o <em>Management Studio</em>. Apesar de ser uma excelente ferramenta, o SQLCMD tem suas limitações &#8220;gráficas&#8221;, no entanto em alguns cenários é a ferramenta ideal!</p>
<p>Os exemplos que vou apresentar foram executados na minha estação de trabalho. Nela tenho instalado um SQL Server 2005. Minha instância é uma instância nomeada e é identificada como SQL05.</p>
<p>Pra começar a conversa vamos ao prompt de comando (menu Iniciar &gt; Executar &gt; cmd).</p>
<p>No prompt de comando, para conectar no meu SQL local (localhost), utilizando o SQLCMD, devo digitar o seguinte comando:</p>
<blockquote><p>sqlcmd –E  –S  LOCALHOST\SQL05</p>
</blockquote>
<p>No comando acima estou conectando no SQL Server utilizando a autenticação Windows (<strong>-E</strong>) na instância SQL05 (<strong>-S</strong>), mas se for necessário conectar utilizando a autenticação do SQL Server, ficaria assim:</p>
<blockquote><p>sqlcmd  –U SA –P senhateste –S  LOCALHOST\SQL05</p>
</blockquote>
<p>No exemplo acima, estou conectando no SQL utilizando o login SA  do SQL Server (<strong>-U</strong>) com a senha  <em>senhateste </em>(<strong>-P</strong>).</p>
<p>Se a conexão for realizada com <strong>sucesso</strong> o prompt do SQLCMD ficará similar à imagem abaixo:</p>
<p><img class="aligncenter size-full wp-image-405" title="01sqlcmd" src="http://silasmendes.com/dba/wp-content/uploads/2009/10/01sqlcmd.PNG" alt="01sqlcmd" width="344" height="99" /></p>
<p>Se o seu SQL Server foi instalado como uma instância padrão a conexão é ainda mais simples, pois você não precisa especificar o nome da instância. No exemplo abaixo estamos conectando numa instância padrão do SQL Server, utilizando autenticação Windows.</p>
<blockquote><p>sqlcmd –E</p>
</blockquote>
<p>Uma vez conectado, para sair do SQLCMD podemos utilizar os clássicos <strong>EXIT </strong>ou <strong>CTRL + C</strong>.</p>
<p>Dentro do SQLCMD é importante saber que suas instruções sql só serão executadas quando você digitar um <strong>GO </strong>e confirmar com um ENTER. No exemplo abaixo eu mudei o contexto para a base de dados Northwind e logo depois executei uma consulta. Veja que ao fim de cada instrução eu adicionei um GO.</p>
<h5><img class="aligncenter size-full wp-image-406" title="02sqlcmd" src="http://silasmendes.com/dba/wp-content/uploads/2009/10/02sqlcmd.PNG" alt="02sqlcmd" width="577" height="414" /><span style="font-weight: normal;">Note que a cada GO a numeração das linhas recomeça.</span></h5>
<p>Uma vez conectado, como já citado, você poderá executar qualquer instrução SQL desde <em>selects</em>, <em>updates</em>, até a criação de bancos e tabelas ou a execução de procedures do sistema que te auxiliem a monitorar seu SQL Server, como:</p>
<p>Ler log do SQL Server</p>
<blockquote><p>sp_readerrorlog</p>
<p>go</p>
</blockquote>
<p>Verificar conexões na instância:</p>
<blockquote><p>sp_who</p>
<p>go</p>
</blockquote>
<p>Etc…</p>
<p>Combinado a isto, é possível também <strong>executar comandos do DOS</strong> <strong>dentro do SQLCMD</strong>. Para listar o C:\ basta digitar</p>
<blockquote><p>!!dir C:\</p>
</blockquote>
<p>Se quiser dar uma limpada na tela, digite:</p>
<blockquote><p>!!cls</p>
</blockquote>
<p>Como você pode notar todos os comandos do prompt DOS são precedidos por dois pontos de exclamação (<strong>!!</strong>).</p>
<p>Ok&#8230;</p>
<p>Mas digamos agora que você tenha aí um script pronto e deseja executá-lo no SQLCMD, além disso deseja gravar o resultado da execução deste script num arquivo txt. Vamos exemplificar esta situação utilizando o script abaixo que será salvo na unidade c:\ num arquivo identificado como <strong>teste.sql</strong>.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2126px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">USE northwind</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2126px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">SELECT</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2126px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>table_name nomeTabela,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2126px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>column_name nomeColuna,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2126px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>data_type tipoDaColuna,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2126px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>isnull(character_set_name, &#8216;NoUnicode&#8217;) campoUnicode</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2126px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">FROM</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2126px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>information_schema.columns</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2126px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">WHERE</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2126px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>table_name = &#8216;Categories&#8217;</div>
<blockquote><p>USE northwind</p>
<p>&#8211; lista todas as colunas da tabela Categories da base Northwind</p>
<p>SELECT</p>
<p><span style="white-space: pre;"> </span>table_name nomeTabela,</p>
<p><span style="white-space: pre;"> </span>column_name nomeColuna,</p>
<p><span style="white-space: pre;"> </span>data_type tipoDaColuna,</p>
<p><span style="white-space: pre;"> </span>isnull(character_set_name, &#8216;NoUnicode&#8217;) campoUnicode</p>
<p>FROM</p>
<p><span style="white-space: pre;"> </span>information_schema.columns</p>
<p>WHERE</p>
<p><span style="white-space: pre;"> </span>table_name = &#8216;Categories&#8217;</p>
</blockquote>
<p>Veja como fica a linha dessa chamada utilizando o SQLCMD:</p>
<p><img class="aligncenter size-full wp-image-407" title="03sqlcmd" src="http://silasmendes.com/dba/wp-content/uploads/2009/10/03sqlcmd.PNG" alt="03sqlcmd" width="687" height="23" /></p>
<h5><span style="font-weight: normal;"><span style="color: #999999;">sqlcmd -E -S LOCALHOST\SQL05 -i&#8221;c:\teste.sql&#8221; -o&#8221;resultado.txt&#8221;</span></span></h5>
<p class="MsoNormal">O parâmetro <strong>–i</strong> indica o arquivo de entrada (INPUT),  que contém o script que será executado. O parâmetro <strong>–o</strong> indica qual será o arquivo de saída (OUTPUT), que conterá o resultado da execução.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Como qualquer assunto no SQL Server, este é mais um que poderíamos discorrer por páginas e mais páginas&#8230; mas por enquanto ficamos por aqui. Creio que essa introdução é o suficiente pra entendemos o potencial <span style="mso-spacerun: yes;"> </span>desta ferramenta.</p>
<p class="MsoNormal">Para obter mais informações sobre os parâmetros do <strong>SQLCMD</strong>, no prompt do DOS digite <strong>sqlcmd -?</strong> Se esse help parecer um pouco confuso você poderá acessar este <a href="http://msdn.microsoft.com/pt-br/library/ms165702.aspx" target="_blank">link </a>e ter informações mais detalhadas.</p>
<p class="MsoNormal"> </p>
<blockquote><p class="MsoNormal">É importante lembrar que o SQLCMD está disponível para o SQL Server 2005 e 2008. Para versões anteriores utilize o <em>OSQL </em>ou <em>ISQL</em>.</p>
</blockquote>
<p class="MsoNormal">Bom trabalho, bons estudos!</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Mendes</p>
]]></content:encoded>
			<wfw:commentRss>http://silasmendes.com/dba/sql-server-via-prompt/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

