Menu Content/Inhalt
Apresentação arrow Sysdba Out

Sysdba Out Imprimir E-mail
Por Fernando Reis Guimarães   
17 de July de 2007

Introdução

Se você já tentou acessar um banco de dados firebird "protegido" por uma role SYSDB provavelmente obteve o erro: 

- "Your login SYSDBA is same as one of the SQL role name. Ask your database administrator to set up a valid Firebird login."

O que vou ensinar é como remover esta "proteção" para que você possa ter acesso completo ao banco.


Criando um banco de dados exemplo.

Utilize o gsec para criar um novo usuário:

C:\>gsec -user sysdba -password masterkey

GSEC> add someuser -pw passwd -fname someuserf -mName someuserm -lName someuserl;

GSEC> quit

 

Utilize o isql para criar o novo banco de dados.

 

C:\>isql -u someuser -p passwd

Use CONNECT or CREATE DATABASE to specify a database

SQL> CREATE DATABASE 'C:\SYSDBAOUT.FDB';

SQL> CREATE ROLE SYSDBA;

SQL> QUIT;

 

Conectando-se ao banco

Tente se conectar ao banco como SYSDBA e veja que não é possível.

 C:\>isql -u sysdba -p masterkey

Use CONNECT or CREATE DATABASE to specify a database

SQL> connect 'c:\sysdbaout.fdb';

Statement failed, SQLCODE = -902

Your login SYSDBA is same as one of the SQL role name. Ask your database administrator to set up a valid Firebird login.

SQL>

 Somente é possível com o usuário que criou o banco.

Outros usuários também podem conectar-se ao banco, mas isso fica foro do objetivo desse artigo, entretanto é possível negar permissões para outros usuários.

C:\>isql -u sydba -p 21436587

Use CONNECT or CREATE DATABASE to specify a database

SQL> connect 'c:\sysdbaout.fdb';

Database:  'c:\sysdbaout.fdb', User: sydba

SQL> quit;

 

Desbloqueando o banco de dados utilizando o xvi32.

Antes de editar o banco de dados no xvi32, coloque-o em modo shutdown.

C:\>gfix -user someuser -password passwd -shut full -force 0 "c:\sysdbaout.fdb"

 

Abra o banco de dados com o xvi32.

 Depois já ao menu Search - > Replace ou aperte as teclas Ctrl+R.

     

 

Mande substituir.

ATENÇÃO:

NOVE substituições deveram ser feitas, se o programa substituir mais pode ser que a string SYSDBA esteja escrito em algum lugar dentro do banco de dados, e poderá corrompê-lo.

Você poe substituir a string SYSDBA por qualquer string de mesmo tamanho.

Tome cuidado!

 Salve e saia do programa.

 

Testando o arquivo.

Tudo pronto.

O banco de dados já está desbloqueado e você deverá conseguir acesso ao banco pelo SYSDBA.

Mas antes devemos coloca-lo online:

Repare que você já poderá utilizar o SYSDBA.

C:\>gfix -online "c:\sysdbaout.fdb" -user sysdba -password masterkey

 Conectando-se ao banco:

 C:\>isql -user sysdba -password 120955

Use CONNECT or CREATE DATABASE to specify a database

SQL> connect 'c:\sysdbaout.fdb';

Database:  'c:\sysdbaout.fdb', User: sysdba

SQL> quit;

 

Desenvolvi um utilitário para automatiza este processo, não se esqueça de dar um shutdown no banco antes de utilizá-lo.

http://arquivos.fernandobhz.com.br/SYSDBAOut.zip

 

Última Atualização ( 03 de July de 2009 )