Menu Content/Inhalt
Apresentação arrow Sysdba Out

Sysdba Out
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 )