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 Query Analyser ou o Management Studio. Apesar de ser uma excelente ferramenta, o SQLCMD tem suas limitações “gráficas”, no entanto em alguns cenários é a ferramenta ideal!
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.
Pra começar a conversa vamos ao prompt de comando (menu Iniciar > Executar > cmd).
No prompt de comando, para conectar no meu SQL local (localhost), utilizando o SQLCMD, devo digitar o seguinte comando:
sqlcmd –E –S LOCALHOST\SQL05No comando acima estou conectando no SQL Server utilizando a autenticação Windows (-E) na instância SQL05 (-S), mas se for necessário conectar utilizando a autenticação do SQL Server, ficaria assim:
sqlcmd –U SA –P senhateste –S LOCALHOST\SQL05No exemplo acima, estou conectando no SQL utilizando o login SA do SQL Server (-U) com a senha senhateste (-P).
Se a conexão for realizada com sucesso o prompt do SQLCMD ficará similar à imagem abaixo:
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.
sqlcmd –EUma vez conectado, para sair do SQLCMD podemos utilizar os clássicos EXIT ou CTRL + C.
Dentro do SQLCMD é importante saber que suas instruções sql só serão executadas quando você digitar um GO 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.
Note que a cada GO a numeração das linhas recomeça.
Uma vez conectado, como já citado, você poderá executar qualquer instrução SQL desde selects, updates, 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:Ler log do SQL Server
sp_readerrorlogVerificar conexões na instância:
go
sp_whoEtc…
go
Combinado a isto, é possível também executar comandos do DOS dentro do SQLCMD. Para listar o C:\ basta digitar
!!dir C:\Se quiser dar uma limpada na tela, digite:
!!clsComo você pode notar todos os comandos do prompt DOS são precedidos por dois pontos de exclamação (!!).
Ok…
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 teste.sql.
USE northwind
SELECT
table_name nomeTabela,
column_name nomeColuna,
data_type tipoDaColuna,
isnull(character_set_name, ‘NoUnicode’) campoUnicode
FROM
information_schema.columns
WHERE
table_name = ‘Categories’
USE northwindVeja como fica a linha dessa chamada utilizando o SQLCMD:
– lista todas as colunas da tabela Categories da base Northwind
SELECT
table_name nomeTabela,
column_name nomeColuna,
data_type tipoDaColuna,
isnull(character_set_name, ‘NoUnicode’) campoUnicode
FROM
information_schema.columns
WHERE
table_name = ‘Categories’
sqlcmd -E -S LOCALHOST\SQL05 -i”c:\teste.sql” -o”resultado.txt”
O parâmetro –i indica o arquivo de entrada (INPUT), que contém o script que será executado. O parâmetro –o indica qual será o arquivo de saída (OUTPUT), que conterá o resultado da execução.
Como qualquer assunto no SQL Server, este é mais um que poderíamos discorrer por páginas e mais páginas… mas por enquanto ficamos por aqui. Creio que essa introdução é o suficiente pra entendemos o potencial desta ferramenta.
É importante lembrar que o SQLCMD está disponível para o SQL Server 2005 e 2008. Para versões anteriores utilize o OSQL ou ISQL.
Fonte: http://silasmendes.com/dba/sql-server-via-prompt
Acessado em: 17/03/2011
Acessado em: 17/03/2011
Nenhum comentário:
Postar um comentário