[firebase-br] Alterar tabelas do sistema no Firebird 3
Carlos H. Cantu
listas em warmboot.com.br
Qui Abr 23 20:37:39 -03 2020
Não é necessário dar GRANT pro SYSDBA, pois ele já pode tudo.
UG> Além de ter que criar uma nova coluna com um nome temporário com o tipo
UG> certo, fazer um update e depois deletar a coluna antiga e renomear a nova
UG> para o nome da antiga.
Já que você não quer recriar o banco com o subtype correto, não tem
outra forma.
[]s
Carlos H. Cantu
eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br
UG> Pessoal, vi que no firebird 3 as tabelas RDB$ são READ ONLY.
UG> Eu fiz a recuperação de um banco que era FB2.5 porém, ao criar os metadados
UG> do banco novo (FB 3.0), ele criou os BLOBS que era SUB_TYPE 1 como SUB_TYPE
UG> 0.
UG> Já fiz o pump dos dados, e agora preciso alterar o SUB_TYPE dos BLOBS de 0
UG> para 1.
UG> No FB2.5 eu fiz isso através do update a seguir:
UG> UPDATE RDB$FIELDS SET
UG> RDB$FIELD_SUB_TYPE = 2
UG> WHERE RDB$FIELD_NAME in (
UG> select t1.RDB$FIELD_NAME FROM
UG> RDB$FIELDS t1
UG> join RDB$RELATION_FIELDS t2
UG> on t1.RDB$FIELD_NAME = t2.RDB$FIELD_SOURCE
UG> where t2.RDB$RELATION_NAME not CONTAINING '$'
UG> and t1.RDB$FIELD_TYPE = 261)
UG> e deu certo, Porém, no firebird 3.0 não consigo dar updates nas tabelas
UG> RDB$.
UG> Já tentei usar o seguinte comando:
UG> alter table NOME_TABELA alter COLUMN NOME_CAMPO type BLOB sub_type 1
UG> Porém no FB3 ele diz que não pode alterar o sub_type assim.
UG> Já tentei procurar no RELEASE NOTE e achei o seguinte:
UG> User Privileges for Metadata Changes
UG> Dmitry Yemanov with Roman Simakov
UG> In Firebird 3, the system tables are read-only. This SQL syntax provides
UG> the means to assign metadata write privileges to specified users or roles
UG> for specified objects. See Tracker item CORE-735.
UG> Note Some people have been applying the nickname “DDL privileges” to this
UG> feature. Don't confuse it with “DDL triggers”! A more useful nickname would
UG> be “Metadata privileges”. Syntax Patterns Granting metadata privileges:
UG> GRANT CREATE TO [USER | ROLE] | [WITH GRANT OPTION];
UG> GRANT ALTER ANY TO [USER | ROLE] | [WITH GRANT OPTION];
UG> GRANT DROP ANY TO [USER | ROLE] | [WITH GRANT OPTION];
UG> Executei o comando: GRANT ALTER ANY TABLE TO SYSDBA;
UG> porém ainda não tive sucesso...
UG> Além de ter que criar uma nova coluna com um nome temporário com o tipo
UG> certo, fazer um update e depois deletar a coluna antiga e renomear a nova
UG> para o nome da antiga.
UG> Observação: Fica inviável restaurar o banco antigo novamente, pois já está
UG> no cliente e já contem dados atualizados.
UG> Alguém sabe o que posso fazer?
UG> É possível fazer um downgrade do FB3.0 para o 2.5 apenas com backup
UG> restore, se eu não utilizei nada do FB3 no banco ainda?
UG> Desde já agradeço a ajuda de vocês! :)
UG> --
UG> ______________________________________________
UG> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
UG> Para saber como gerenciar/excluir seu cadastro na lista, use:
UG> http://www.firebase.com.br/fb/artigo.php?id=1107
UG> Para consultar mensagens antigas:
UG> http://www.firebase.com.br/pesquisa_lista.html
Mais detalhes sobre a lista de discussão lista