Utlizando as ferramentas de linha de comando

Propaganda
Utilizando as
ferramentas de linha
de comando
Por Pedro Antonio Galvão Junior
Data de criação: 14/05/2007
Resumo
Neste artigo o leitor encontrará informações sobre as
ferramentas de linha de comando existentes no Microsoft SQL
Server 2005, suas funcionalidades, formas de uso e inovações
em relação versões anteriores.
Observação importante
Este artigo técnico foi escrito por um membro da comunidade brasileira e não é um
documento oficial Microsoft. A Microsoft Corporation e a Microsoft Brasil não
fornecem quaisquer garantias, explícitas ou expressas, sobre o conteúdo deste
documento, nem concorda necessariamente com opiniões pessoais dos colunistas,
bem como não se responsabiliza por danos causados por procedimentos técnicos
descritos nestas colunas.
Coluna escrita por membro da comunidade TechNet
- Página 1 de 7
Este artigo aplica-se aos seguintes produtos e tecnologias:

Microsoft SQL Server 2005(Workgroup Edition, Standard Edition, Enterprise
Edition, Developer Edition, Express Edition).

Microsoft Windows XP Professional.

Microsoft Windows 2000 Server.

Microsoft Windows Server 2003.
Introdução
O SQL Server é uma família de produtos e tecnologias que atende aos requisitos de
armazenamento de dados dos ambientes OLTP e OLAP, é um sistema de gerenciamento de
bancos de dados relacionais (RDBMS, relacional database management sustem).
O SQL Server 2005 é mundialmente conhecido pelo seu poder de processamento
e armazenamento de informações em diferentes tipos de estruturas de servidores,
estruturas de rede e níveis de empresas. Ao instalar o SQL Server em sistemas
operacionais de servidor, o SQL Server faz várias modificações no ambiente. Essas
modificações incluem a instalação de ferramentas administrativas para uso em
ambiente texto (Prompt de Comando do Windows), para facilitar a administração
do servidor independente da interface gráfica, bem como, utilizar recursos
específicos que não estejam presentes nas ferramentas gráficas de administração.
As ferramentas de linha de comando
As ferramentas de administração gráficas fornecem quase tudo de que você
precisa para trabalhar com o SQL Server. Além disso, há diversas ocasiões em que
você pode querer trabalhar a partir de linha de comando, especialmente se quiser
automatizar a instalação, a administração ou a manutenção com scripts do seu
servidor ou client de acesso ao SQL Server. Destacamos como principal ferramenta
de linha de comando existente no SQL Server 2005, o SQLCMD.EXE, que substitui o
OSQL.EXE e o ISQL.EXE, presentes na versão do Microsoft SQL Server 2000. Outra
ferramenta muito conhecida e alta importância em processos de extração,
transformação e carga (ETL) o BCP.EXE.

SQLCMD  O SQLCMD é uma ferramenta de consulta do SQL que você pode
executar a partir de linha de comando (Prompt de Comando). Ao contrário do
OSQL e o ISQL, toda forma de comando presente no SQLCMD em relação ao
SQL Server é realizado de forma somente através do OLE DB API. Mas o
SQLCMD possui características similares ao OSQL/ISQL, apresenta muito
pouco overhead, tornando-o uma ótima escolha no momento em que os
recursos do sistema estão trabalhando simultaneamente, desta forma, evita
a ocorrência desnecessário de utilização de memória virtual para paginação
Coluna escrita por membro da comunidade TechNet
- Página 2 de 7
de dados em disco. O SQLCMD esta presente em todas as edições do SQL
Server 2005 com ferramenta para linha de comando que substituem tanto o
OSQL como também o ISQL.
Outra diferença existente no SQLCMD em relação ao ISQL é o suporte a
conexão com instâncias identificadas do SQL Server 2005, por padrão, o
SQLCMD se conecta a instância padrão do SQL Server. Logicamente, ao
especificar o nome da instância bem como o nome do servidor, o SQLCMD se
conecta ao nome especificado de instância no servidor designado.
Ao iniciar o SQLCMD, é possível emitir instruções para executar consultas de
TRANSACT-SQL, executar stored procedures e realizar tarefas adicionais.
Como você está trabalhando na linha de comando, esses comandos não são
executados automaticamente é necessário utilizar comandos adicionais para
instruir o SQLCMD sobre quando e como executar as instruções, quando
ignorá-las. As instruções adicionais devem ser declaradas em linhas
adicionais separadas e estão resumidas na Tabela 1.1.
Nas edições anteriores do SQL Server, era necessário utilizar o ODBCPING
para verificar uma conexão de driver ODBC entre um cliente e servidor.
Agora no SQL Server 2005, todo este processamento é realizada através do
OLE DB, trabalhando preferencialmente para estabelecer conexões de bancos
de dados.
Outra ferramenta de linha de comando muito similar ao SQLCMD utilizada
para estabelecer conexões de bancos de dados para teste, manutenção e
suporte, praticamente desconhecida, mas muito útil chamada SQLCMD-A.
Sintaxe do SQLCMD
sqlcmd
[{ { -U login_id [ -P password ] } | –E trusted connection }]
[ -z new password ] [ -Z new password and exit]
[ -S server_name [ \ instance_name ] ] [ -H wksta_name ] [ -d db_name ]
[ -l login time_out ] [ -A dedicated admin connection ]
[ -i input_file ] [ -o output_file ]
[ -f < codepage > | i: < codepage > [ < , o: < codepage > ] ]
[ -u unicode output ] [ -r [ 0 | 1 ] msgs to stderr ]
[ -R use client regional settings ]
[ -q "cmdline query" ] [ -Q "cmdline query" and exit ]
[ -e echo input ] [ -t query time_out ]
[ -I enable Quoted Identifiers ]
[ -v var = "value"...] [ -x disable variable substitution ]
[ -h headers ][ -s col_separator ] [ -w column_width ]
Coluna escrita por membro da comunidade TechNet
- Página 3 de 7
[ -W remove trailing spaces ]
[ -k [ 1 | 2 ] remove[replace] control characters ]
[ -y display_width ] [-Y display_width ]
[ -b on error batch abort ] [ -V severitylevel ] [ -m error_level ]
[ -a packet_size ][ -c cmd_end ]
[ -L [ c ] list servers[clean output] ]
[ -p [ 1 ] print statistics[colon format]]
[ -X [ 1 ] ] disable commands, startup script, enviroment variables [and exit]
[ -? show syntax summary ]
Tabela 1.1 - Comandos do SQLCMD
GO [count]
:List
[:] RESET
:Error
[:] ED
:Out
[:] !!
:Perftrace
[:] QUIT
:Connect
[:] EXIT
:On Error
:r
:Help
:ServerList
:XML [ON | OFF]
:Setvar
:Listvar
Tabela 1.2 - SQLCMD Variáveis de Scripting
Variable
SQLCMDUSER
Related switch R/W
-U
R
""
SQLCMDPASSWORD
-P
--
""
SQLCMDSERVER
-S
R
"DefaultLocalInstance"
SQLCMDWORKSTATION
-H
R
"ComputerName"
SQLCMDDBNAME
-d
R
""
SQLCMDLOGINTIMEOUT
-l
R/W "8" (seconds)
SQLCMDSTATTIMEOUT
-t
R/W "0" = wait indefinitely
SQLCMDHEADERS
-h
R/W "0"
SQLCMDCOLSEP
-s
R/W " "
Coluna escrita por membro da comunidade TechNet
Default
- Página 4 de 7
SQLCMDCOLWIDTH
-w
R/W "0"
SQLCMDPACKETSIZE
-a
R
SQLCMDERRORLEVEL
-m
R/W 0
SQLCMDMAXVARTYPEWIDTH
-y
R/W "256"
SQLCMDMAXFIXEDTYPEWIDTH
-Y
R/W "0" = unlimited
"4096"
SQLCMDEDITOR
R/W "edit.com"
SQLCMDINI
R

""
BCP [Bulk Copy Program]  O BCP é um programa para cópia de grandes
volumes de dados, utilizado para importar e exportar dados ou copiar dados
entre instâncias do SQL Server 2005. A principal vantagem do BCP é sua
velocidade,
muito
importar/exportar
mais
bancos
rápido
de
que
dados.
os
procedimentos
Mas
infelizmente
padrão
sua
para
principal
desvantagem esta relacionada à sintaxe de comandos, que o torna muito
complicado.
Sintaxe do BCP
bcp {[[database_name.][owner].]{table_name | view_name} | "query"}
{in | out | queryout | format} data_file
[-mmax_errors] [-fformat_file] [-x] [-eerr_file]
[-Ffirst_row] [-Llast_row] [-bbatch_size]
[-n] [-c] [-N] [-w] [-V (60 | 65 | 70 | 80)] [-6]
[-q] [-C { ACP | OEM | RAW | code_page } ] [-tfield_term]
[-rrow_term] [-iinput_file] [-ooutput_file] [-apacket_size]
[-Sserver_name[\instance_name]] [-Ulogin_id] [-Ppassword]
[-T] [-v] [-R] [-k] [-E] [-h"hint [,...n]"]
Outras ferramentas de linha de comando
Além destas duas ferramentas de linha de comando, conhecidas SQLCMD e BCP, o SQL
Server 2005 apresenta outras pouco conhecidas mas de grande utilidade, localizada na
maioria dos executáveis de linha de comando no diretório %ProgramFiles%\Microsoft SQL
Server\90\Tools\Bin ou no diretório do componente do SQL Server com que eles se
relacionam.
Coluna escrita por membro da comunidade TechNet
- Página 5 de 7
Tabela 1.3 – Outras ferramentas de linha de comando
Nome
bcp
Descrição
Localização
Utilizado para importar e exportar dados ou %ProgramFiles%\Microsoft SQL
copiar dados entre instâncias do SQL Server. Server\90\Tools\Binn
dta
Utilizado para analisar cargas de trabalho e
%ProgramFiles%\Microsoft SQL
recomendar alterações de otimização para
Server\90\Tools\Binn
essa carga
dtexec
Utilizado para configurar e executar um
pacote
SQL
Server
Integration %ProgramFiles%\Microsoft SQL
Services(SSIS).
A
ferramenta
GUI Server\90\DTS\Binn
correspondente é DTExecUI.
dtutil
Utilizado para gerenciar pacotes SQL Server %ProgramFiles%\Microsoft SQL
Integration Services (SSIS).
Server\90\DTS\Binn
nscontrol
%ProgramFiles%\Microsoft SQL
Utilizado para criar e gerenciar instâncias do
Server\90\NotificationServices\
Notification Services.
9.0.242\Binn
profiler90
Utilizado para iniciar o SQL Profiler Server a %ProgramFiles%\Microsoft SQL
partir de um prompt de comando.
Server\90\Tools\Binn
rs
Utilizado para executar scripts do Reporting %ProgramFiles%\Microsoft SQL
Services.
Server\90\Tools\Binn
rsconfig
Utilizado para configurar uma conexão com o %ProgramFiles%\Microsoft SQL
servidor de relatórios.
Server\90\Tools\Binn
rskeymgm Utilizado
para
gerenciar
chaves
t
criptografia em um Report Server.
sac
de %ProgramFiles%\Microsoft SQL
Server\90\Tools\Binn
Utilizado
para
importar
ou
exportar
%ProgramFiles%\Microsoft SQL
configurações de área de superfície entre
Server\90\Shared
instâncias do SQL Server 2005.
%ProgramFiles%\Microsoft SQL
Server\<InstanceName>\MSS
sqlagent9 Utilizado para iniciar o SQL Server Agent a QL\Binn Default
0
partir de um prompt de commando.
Instance:%ProgramFiles%\Micr
osoft SQL
Server\MSSQL.1\MSSQL\Binn
sqlcmd
Utilizado para realizar administração e inserir %ProgramFiles%\Microsoft SQL
instruções T-SQL no prompt de comando.
Server\90\Tools\Binn
sqlmaint
Utilizado
para
executar
planos
de
%ProgramFiles%\Microsoft SQL
manutenção de banco de dados criados em
Server\MSSQL.1\MSSQL\Binn
versões anteriores do SQL Server.
Sqlservr
Utilizado para iniciar e parar uma instância do %ProgramFiles%\Microsoft SQL
SQL Server Database Engine.
Server\MSSQL.1\MSSQL\Binn
tablediff
Utilizado para comparar os dados em duas %ProgramFiles%\Microsoft SQL
tabelas e exibir as diferenças.
Server\90\COM
Coluna escrita por membro da comunidade TechNet
- Página 6 de 7
Links Relacionados

http://www.microsoft.com/brasil/sql

http://www.mcdba.com.br

http://www.msit.com.br

http://www.msdnbrasil.com.br

http://www.technetbrasil.com.br
Conclusão
Administrar um servidor SQL Server e todos os seus serviços e instâncias através
de uma ferramenta gráfica é mais rápido, prático e dinâmico. Mas em determinados
momentos ou situações especiais é necessário realizar procedimento através de
linha de comando com objetivo de obter informações ou resultados independe do
local ou forma de acesso. Por enquanto o meu muito obrigado, até a próxima.
Pedro Antonio Galvão Junior atua no mercado de TI/SI há 13 anos, especializando-se na área de infraestrutura e desenvolvimento de aplicações baseada em soluções Microsoft. Graduado no curso superior
de Tecnologia em Sistemas da Informação na Faculdade FAC São Roque (Filiada a Faculdades Uninove
de São Paulo), atualmente esta cursando o curso de Pós-Graduação (Gestão e Engenharia de Processos
para Desenvolvimento de Software com RUP) em São Paulo na Faculdade FIAP, dedicando-se também
na sua formação em MCDBA (SQL Server 2000), MVP(Most Valuable Profissional) Windows Server
System – SQL Server, atuou em diversas empresas na região do Sorocaba e São Roque, como Suporte
técnico em Informática, Analista Programador, Analista de Sistemas e DBA. Trabalha atualmente como
Administrador de Bancos de Dados SQL Server 2000 e 2005, desenvolvimento de aplicação Client-Server
na Fábrica de Artefatos de Látex São Roque.
Coluna escrita por membro da comunidade TechNet
- Página 7 de 7
Download