O que é a ferramenta SQLCMD?

O SQLCMD é uma ferramenta de linha de comando que serve para executar comandos e scripts Transact-SQL em instâncias do SQL Server 2008, o SQLCMD substitui o OSQL do SQL Server 2000.

Vou mostrar duas diferentes formas como se conectar no SQL Server 2008 ou 2008 R2, no caso mostrar em uma maquina local e como me conectar em um servidor com a autenticação do próprio SQL Server.

Para se conectar localmente no SQL Server 2008 ou 2008 R2 utilize o seguinte código no prompt de comandos:


SQLCMD -E -S LOCALHOST\(NOME DA INSTÂNCIA) 

As opções de autenticação (-E, -U e -P) que especificam as credenciais que o sqlcmd usa para se conectar à instância do SQL Server. A opção de servidor (-S) é a que identifica a instância do Microsoft SQL Server, com qual SQLCMD se conecta.

Antes de apertar a tecla ENTER, preste atenção no ponto marcado em vermelho, ainda não está no contexto do SQLCMD, como mostra a figura a figura 1:

Janela do Prompt de Comandos
Figura 1. Janela do Prompt de Comandos.

Neste próximo ponto estaremos no contexto do SQLCMD, como pode ser visualizado com a marcação em vermelho, como mostra a figura 2:

Janela do Prompt de Comandos no SQLCMD
Figura 2. Janela do Prompt de Comandos no SQLCMD.

Agora vamos para o passo seguinte, conectar no SQLCMD usando o login SA do SQL Server, para isso a sintaxe é um pouco diferente:


SQLCMD -U SA -P (SENHA) -S LOCALHOST\(NOME DA INSTÂNCIA)

Veja o exemplo de como seria no prompt de comandos, como mostra a figura 3:

Janela do Prompt de Comandos no SQLCMD (outra forma de conexão)
Figura 3. Janela do Prompt de Comandos no SQLCMD (outra forma de conexão).

Agora vamos fazer alguns comandos T-SQL utilizando a ferramenta SQLCMD.

Primeiro passo:

Entre no promp de comandos, em seguida digite um dos comandos informados anteriormente:


SQLCMD -E -S LOCALHOST\(NOME DA INSTÂNCIA
SQLCMD -U SA -P (SENHA) -S LOCALHOST\(NOME DA INSTÂNCIA)

Depois que você se conectar ao SQLCMD, utilize o comando USE para começar a acessar um banco de dados qualquer, no meu caso vou utilizar o AdventureWorks e depois aperte a tecla ENTER, como mostra a figura 4:

Janela do Prompt de Comandos no SQLCMD iniciando acesso ao banco
Figura 4. Janela do Prompt de Comandos no SQLCMD iniciando acesso ao banco.

Ainda não estamos propriamente dito no banco de dados selecionado, temos que colocar uma palavra reservada do SQL Server chamada GO depois aperte a tecla ENTER, como mostra a figura 5 :

Janela do Promp de Comandos no SQLCMD já no contexto do banco
Figura 5. Janela do Promp de Comandos no SQLCMD já no contexto do banco.

Segundo passo:

Neste momento vamos fazer um SELECT na tabela Person.Contact do banco AdventureWorks, utilizar o seguinte código:

 SELECT * FROM Person.Contact 

O resultado sairá um pouco estranho, mas a utilização do SQLCMD em alguns momentos se torna uma ferramenta indispensável, veja na figura 6:

Janela do SQLCMD mostrando os dados da tabela Person Contact
Figura 6. Janela do SQLCMD mostrando os dados da tabela Person Contact.

Agora vamos criar um banco de dados de exemplo e popular uma ou duas tabelas, logo abaixo segue o código:


CREATE DATABASE EXEMPLO
GO

Veja na próxima imagem, nunca esqueça da palavra reservada GO, sem ela o seu comando não vai ser executado, como mostra a figura 7:

Janela do SQLCMD criando um  bando de dados
Figura 7. Janela do SQLCMD criando um bando de dados.

Em seguinda pode abrir seu Management Studio para confirmar a criação do banco de dados, caso não apareça, clique com o botão direito na pasta databases e clique em Refresh, como mostra a figura 8 :

Janela do Management Studio em especifico Object Explorer
Figura 8. Janela do Management Studio em especifico Object Explorer.

Vamos criar uma tabela no nosso banco EXEMPLO, logo abaixo segue o código de exemplo:


CREATE TABLE TABELA (
COD INT NOT NULL,
NOME VARCHAR (40),
ENDERECO VARCHAR (60)
TELEFONE INT
)

Agora note como esse código fica no SQLCMD, o visual não é tão agradável mas da pra trabalhar sem nenhum problema, como mostra na figura 9:

Janela do SQLCMD, criando uma tabela
Figura 9. Janela do SQLCMD, criando uma tabela.

Vamos utilizar o comando INSERT, para ver qual a reação do SQLCMD, como mostra a figura 10:

Janela do SQLCMD, inserindo dados
Figura 10. Janela do SQLCMD, inserindo dados.

Veja agora no Management Studio, se existe algo de errado ou alguma diferença, como mostra a figura 11:

Janela do Management Studio, com o que foi feito no SQLCMD
Figura 11. Janela do Management Studio, com o que foi feito no SQLCMD.

Para quem se interessar de forma mais profunda no assunto, segue alguns links que encontrei, no caso seriam informações mais detalhadas: