FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
"limpiar" registros de rdb$relation_constraints por daño en base de datos
Que tal
Tengo una base de datos que se dañó y al recuperar el único respaldo disponible, este se recupera sin procedures, triggers ni constraints. Utilizando la opción "database comparer" de ibexpert, puedo obtener el código de los objetos que "desaparecieron". Con los procedures y los triggers, no tuve ningún problema para volverlos a poner, pero con los constraints de tipo "check", me marca error: violation of PRIMARY or UNIQUE KEY constraint "RDB$INDEX_12" on table "RDB$RELATION_CONSTRAINTS". Problematic key value is ("RDB$CONSTRAINT_NAME" = 'ACTIVOS_FIJOS_ESTATUS'). Es decir, en la tabla de sistema "RDB$RELATION_CONSTRAINTS" todavía existe el registro, aunque en la tabla a la que pertenece, no existe. Ya hice un respaldo, mend, sweep, validation y según yo, ya hice todo lo que tengo disponible para "limpiar" la tabla de sistema. Y como nada de eso me quita esos registros, intenté hacerlo por sql, pero la instrucción "delete" no está permitida para tablas de sistema. Entonces, la constraint ya no existe en la tabla, pero sigue registrada en la tabla de sistema. ¿qué puedo hacer o cómo podría eliminar esos registros de la tabla "RDB$RELATION_CONSTRAINTS"? Saludos
__________________
|
#2
|
||||
|
||||
No queda muy claro el proceso que has hecho y no podemos probar, tampoco se entiende que restaures una DB y venga sin triggers, sps, etc.
Prueba a desactivar índices antes de restaurar esa tabla, luego lo activas, y si antes ves que hay alguna clave repetida la borras y entonces lo activas.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
||||
|
||||
Cita:
Ya probé desactivar y activar los índices, pero el problema no está en los índices, ni en las tablas de la base de datos. El problema es que en las tablas de sistema, sigue el registro de un "constraint" que no existe en la tabla que debería tenerlo. Mi tabla sin check https://drive.google.com/open?id=1gY...qGSL0XS0Vyki8d Pero el registro sí existe en la tabla del sistema rdb$relation_constraints, pero no se permite borrar: https://drive.google.com/open?id=1n6...nJwPQpGShHQ3ls
__________________
|
#4
|
||||
|
||||
No tienes el SQL de creacion de la estructura?
En fin, yo solo exportaria los datos y crearia la estructura aparte en una nueva y luego importo los datos.
__________________
El malabarista. |
#5
|
||||
|
||||
Cita:
Si te refieres a crear una tabla nueva, exporta la información, luego borrar la tabla vieja y finalmente renombrar la nueva, me marca el mismo error de que ya existe en la tabla de sistema
__________________
|
#6
|
||||
|
||||
Lo más cómodo, seguro y fiable es hacer lo que comenta mamcx, creas la estructura de la DB con el script que uses y luego importas los datos, por ejemplo con ibpump.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#7
|
||||
|
||||
Y seguro a la final es menos tiempo que intentar arreglar un archivo corrupto. Ademas que 20GB es poquito*
* Incluso en un disco de 5400 RPM deberia tomar menos de 1 hora toda la vuelta....
__________________
El malabarista. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Recuperar base de datos firebird eliminada con el comando "DROP" | Luis F. Orjuela | Firebird e Interbase | 4 | 18-02-2011 16:12:23 |
"Clonar" estructura de base de datos | Flecha | MS SQL Server | 2 | 01-07-2010 12:11:21 |
"Mejor" base de datos que MySQL... | Ñuño Martínez | Conexión con bases de datos | 23 | 08-03-2010 16:59:39 |
Búsqueda "incremental" en una base de datos | loquillo3 | Conexión con bases de datos | 9 | 08-11-2007 19:07:02 |
¿como Puedo Cancelar La Inserción De Los Últimos Registros "insertados" | OscarBravo | Tablas planas | 1 | 23-07-2007 20:26:35 |
|