isq e gsec

3
Entendendo as ferramentas iSql e gSec Qual Ferramenta utilizar para acessar o Firebird? Com certeza muitos já fizeram ou já ouviram essa pergunta! Não existe uma resposta única para ela, sendo asism vamos analisar as opções. Existem diversas ferramentas para manutenção dos bancos de dados: IBConsole, IBOConsole, IBExpert, Maraton, etc... cada um deles possui características próprias. Diferente do InterBase, o Firebird não vem como uma ferramenta padrão, o que nos obriga a eleger uma delas para realizar essa importante tarefa. De volta a pergunta: então qual usar? Muitos responderiam IBExpert, outros IBConsole ou IBOConsole, mas a maioria das ferramentas disponíveis tem algum fator de limitação, como por exemplo o custo (licença) ou dependência de Sistema Operacional. Existe, no entanto, uma solução que acompanha o próprio Firebird. Por ser um utilitário de linha de comando, sua utilização pode não ser tão amigável quanto a das outras ferramentas que oferecem uma GUI (Graphic User Interface), mas podemos fazer com ela praticamente qualquer tipo de operação com o banco de dados. Vamos lá então: No diretório de instalação do Firebird, existe uma pasta chamada "bin". Essa pasta possui diversos executáveis, alguns bem conhecidos como "gfix" e "gbak", e outros nem tanto. Um deles, chamado "isql" (Interactive SQL) será a solução do nosso problema. O isql tem os seguintes parâmetros: isql [<database>] [-e] [-t <terminator>] [-i <inputfile>] [-o <outputfile>] [-x|-a] [-d <target db>] [-u <user>] [-p <password>] [-page <pagelength>] [-n] [-m] [-q] [-s <sql_dialect>] [-r <rolename>] [-c <num cache buffers>] [-z] -nowarnings -noautocommit por enquanto ignorem-os, voltarei a alguns dele mais tarde Ao executar o isql, vocês verão a seguinte mensagem: "use CONNECT or CREATE DATABASE to specify a database SQL>" a tag "SQL>" indica a espera de comandos. inicialmente iremos criar uma base de dados chamada teste_isql.gdb. CREATE DATABASE "c:\teste_isql.gdb" user "SYSDBA" password "masterkey"; commit; após a criação, vamos nos conectar a ela: CONNECT c:\teste_isql.gdb user SYSDBA password masterkey; pronto, já estamos conectados. Agora temos a liberdade de executar comandos SQL de DDL e DML, como se estivessemos no InteractiveSql do IBConsole. Vamos digitar alguns comandos: create table pessoas(codigo integer not null primary key, nome varchar(50)); OBS: Não esqueçam do ";" no final para representar o término do comando. insert into pessoas values(1, 'Pedro'); insert into pessoas values(2, 'Joao'); insert into pessoas values(3, 'Maria'); insert into pessoas values(4, 'Carlos'); select * from pessoas; Percebam que fora a rotina de conexão, as operações não são tão diferentes do que uma ferramenta gráfica. Claro que se a tabela contiver muitos campos, a visualização fica inviável. Dicas: Comando SHOW: Usuários: 46247 Artigos: 171 Dicas: 113 Downloads: 264 17.11.09 Entendendo as ferramentas iSql e gSec http://www.firebase.com.br/fb/artigo.php?id=712 1 de 3 17/11/2009 17:37

Upload: euaepn

Post on 13-Jun-2015

145 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: isq e gsec

Entendendo as ferramentas iSql e gSec

Qual Ferramenta utilizar para acessar o Firebird? Com certeza muitos já fizeram ou já ouviram essa pergunta! Não existe umaresposta única para ela, sendo asism vamos analisar as opções.

Existem diversas ferramentas para manutenção dos bancos de dados: IBConsole, IBOConsole, IBExpert, Maraton, etc... cada umdeles possui características próprias. Diferente do InterBase, o Firebird não vem como uma ferramenta padrão, o que nos obriga aeleger uma delas para realizar essa importante tarefa.

De volta a pergunta: então qual usar? Muitos responderiam IBExpert, outros IBConsole ou IBOConsole, mas a maioria dasferramentas disponíveis tem algum fator de limitação, como por exemplo o custo (licença) ou dependência de SistemaOperacional. Existe, no entanto, uma solução que acompanha o próprio Firebird. Por ser um utilitário de linha de comando, suautilização pode não ser tão amigável quanto a das outras ferramentas que oferecem uma GUI (Graphic User Interface), maspodemos fazer com ela praticamente qualquer tipo de operação com o banco de dados.

Vamos lá então:

No diretório de instalação do Firebird, existe uma pasta chamada "bin". Essa pasta possui diversos executáveis, alguns bemconhecidos como "gfix" e "gbak", e outros nem tanto. Um deles, chamado "isql" (Interactive SQL) será a solução do nossoproblema.

O isql tem os seguintes parâmetros:

isql [<database>] [-e] [-t <terminator>] [-i <inputfile>] [-o <outputfile>][-x|-a] [-d <target db>] [-u <user>] [-p <password>][-page <pagelength>] [-n] [-m] [-q] [-s <sql_dialect>][-r <rolename>] [-c <num cache buffers>] [-z] -nowarnings -noautocommit

por enquanto ignorem-os, voltarei a alguns dele mais tarde

Ao executar o isql, vocês verão a seguinte mensagem:

"use CONNECT or CREATE DATABASE to specify a databaseSQL>"

a tag "SQL>" indica a espera de comandos.

inicialmente iremos criar uma base de dados chamada teste_isql.gdb.

CREATE DATABASE "c:\teste_isql.gdb" user "SYSDBA" password "masterkey";commit;

após a criação, vamos nos conectar a ela:

CONNECT c:\teste_isql.gdb user SYSDBA password masterkey;

pronto, já estamos conectados. Agora temos a liberdade de executar comandos SQL de DDL e DML, como se estivessemos noInteractiveSql do IBConsole.

Vamos digitar alguns comandos:

create table pessoas(codigo integer not null primary key, nome varchar(50));

OBS: Não esqueçam do ";" no final para representar o término do comando.

insert into pessoas values(1, 'Pedro');insert into pessoas values(2, 'Joao');insert into pessoas values(3, 'Maria');insert into pessoas values(4, 'Carlos');

select * from pessoas;

Percebam que fora a rotina de conexão, as operações não são tão diferentes do que uma ferramenta gráfica. Claro que se a tabelacontiver muitos campos, a visualização fica inviável.

Dicas:

Comando SHOW:

Usuários: 46247Artigos: 171Dicas: 113Downloads: 26417.11.09

Entendendo as ferramentas iSql e gSec http://www.firebase.com.br/fb/artigo.php?id=712

1 de 3 17/11/2009 17:37

Page 2: isq e gsec

Se você pensa que para listar todas as tabelas do banco de dados é necessário digitar um comando DML enorme, envolvendo astabelas de sistema e tudo mais, a resposta é não! Digite SHOW TABELES; e pronto! você tem uma lista de todas as tabelas deseu banco.Esse comando funciona também para triggers, views, procedures, indices, index, a própria database, version, system, roles,domains, exceptions, filter, functions, generators e grants;

OBS: Comandos do tipo "show" são rodados sobre transações do tipo READ COMMITED

Comandos SET

Esses comandos servem para alterar caracterísicas do próprio isql. Abaixo segue a descrição de alguns:

SET TERM: muda o terminator (terminação), ou seja, o caractere responsável pelo término do comando. Por exemplo, digite oseguinte:

set term ^ ; // Mudamos o terminador de ; para ^select * from clientes^ //funcionou, certo? se tivessemos digitado select * from clientes";" teriamos tido um erro, pois o caractere";" já não representa mais o "terminator" do banco.set term;^ // agora voltamos para o terminador original:

SET COUNT [ON | OFF]: indica se os resultados de pesquisas virão seguidos do número de registros envolvidos na mesma (ON)ou não (OFF);

SET ECHO [ON | OFF}: indica se o comando será (ON) ou não (OFF) mostrado antes da execução;

SET LIST [ON | OFF}: indica o formato de como os dados serão mostrados na saída:

ON: Codigo 1Nome Pedro

OFF (Padrão)Codigo Nome1 Pedro

SET STATS[ON | OFF]: especifica se as estatísticas de performance serão exibidas na execução das consultas

*Verificando o tamanho do cache:SET STATS ON;// digite aqui algum comando SQL, como por exemplo um selectCOMMIT;

*Executando comando do shell dentro do isql:

shell <comando> permite essa funcionalidade. Exemplo: shell dir; mostra o conteúdo da pasta atual;

*Exportando resultados de queries (essa dica é MUITO útil):

Para que o resultado exibido no prompt do isql seja exportado para algum aqruivo, devemos fazer o seguinte:

output c:\tabelas.txt;SHOW TABLES; //não ira acontecer nada no promptoutput; //agora temos um arquivo tabelas.txt listando todas as tabelas do banco.

OK, já criamos e acessamos a base, criamos as tabelas, inserimos dados, alteramos as características do próprio isql... mas e asconfigurações de segurança? Como faço?

Bom, para isso, precisaremos de um outro executável que encontra-se na mesma pasta do isql, o "gsec". O "gsec" funciona demaneira um pouco diferente do isql. Não conectaremos a uma base de dados, conectaremos diretamente ao SGDB, claro, afinal asconfigurações de segurança são a nível de servidor, e não de banco de dados. Iremos executar no prompt o seguinte comando:

gsec -user SYSDBA -password masterkeyse a conexão for concluída com sucesso, veremos na tela a seguinte tag: "GSEC>"

Primeiramente vamos ver os usuários registrados no banco:digite display;se quiser ver somente um usuário, digite display <nomeDoUsuário>;

Vamos agora fazer a mudança da senha do SYSDBA:

modify SYSDBA -pw 123;com esse comando, acabei de mudar a senha do usuário SYSDBA para 123. Obviamente você irá escolher uma senha maiscomplexa ;-). Abaixo, irei adicionar um novo Usuário chamado Sandro Perreira Silva, cujo login será SPS e password 456

add SPS -pw 456 -fname Sandro -mName Perreira -lName Silva;

digitem quit para sair e voltamos ao isql:

Entendendo as ferramentas iSql e gSec http://www.firebase.com.br/fb/artigo.php?id=712

2 de 3 17/11/2009 17:37

Page 3: isq e gsec

Dica: podemos iniciar o isql informando o banco de dados, o user e o password.

isql c:\teste_isql.gdb -user SPS -password 456REPAREM DE CONECTAR COM O USUÁRIO QUE ACABMOS DE CRIAR

Vamos digitar:

select * from pessoas; O que aconteceu? O esperado por todos:

no permission to read/select acess to TABLE PESSOAS

para darmos essa permissão, temos que logar como SYSDBA. Então:

exit; // saímos como usuários SPSisql c:\teste_isql.gdb -user SYSDBA -password 123 // logamos como usuário SYSDBAgrant all on PESSOAS to SPS; // damos a permissão para o SPSexit; // saímos como usuários SYSDBAisql c:\teste_isql.gdb -user SPS -password 456 // logoamos como usuário SPSselect * from pessoas; // Finalmente temos acesso aos dados

Parâmetros de execução do isql:

Como disse no início desse artigo, agora veremos alguns parâmetros de entrada do isql que considero interessantes:

Extraindo a metadata do banco:isql -extract -output c:\metadata.txt c:\teste_isql.gdb -user SYSDBA -password -123

pagelength: esse parâmetro é interessante pois permite informar quantos registros serão exibidos na tela, após uma consulta,antes da reimpressão do cabeçalho. Exemplo:

isql -pagelength 1 significa que para cada registro será impresso um cabeçalho

Versão:isql -zimprime a versão do isql e inicia-o;

Dialeto:isql -s 1connecta como dialeto 1 (o interessante sobre isso é que se a base for dialeto 3, o isql avisa)

Gravar resultado em arquivo:isql -o c:\resultado.txt user SYSDBA password 123resultado não aparecerá na tela, somente no arquivo

O objetivo desse tutorial foi passar algumas dicas das ferramentas isql e gsec, qualquer dúvida entrem em contato que namedida do possívei irei ajudar a todos.

Diego Meninicq: 86406546

Avalie esse artigo/dica:

Comentários

[03/05/07] CleberMuito bom esse artigo... os caras não dão muita bola para uma ferramenta tão simples quanto util até precisarem deuma solução que só essa ferramenta tem, ai ficam desesperados para encontrar materiais para desfazerem seusproblemas.

Atenção! Não poste dúvidas nos comentários. Para obter suporte, use a lista de discussão da FireBase.

Copyright (C) Carlos H. Cantu - É proibida a reprodução de qualquer material desse site sem autorização prévia

Entendendo as ferramentas iSql e gSec http://www.firebase.com.br/fb/artigo.php?id=712

3 de 3 17/11/2009 17:37