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