Migrar objetos entre servidores
Abrir en CalíopeCopia tablas, vistas, rutinas, triggers y eventos a otro servidor, o a otra base del mismo.
Dónde está: Espacio de Trabajo › Herramientas › Migración de datos
Abre Migración de datos desde la barra lateral del workspace. Copia tablas, vistas, rutinas, triggers y eventos de esta conexión a otro servidor, o a otra base del mismo.
Elige qué copiar en el árbol de la izquierda. Su cabecera tiene un filtro por nombre: escribe parte del nombre de una base o de un objeto para acotar la lista sin desplegar base por base. Los objetos se agrupan por tipo (Tablas, Vistas, Rutinas, Triggers y Eventos); pulsar un objeto lo marca, y la casilla de cada base marca o desmarca todo su contenido, con la cuenta de marcados sobre el total al lado. Limpiar vacía la selección. El orden lo fija Calíope —tablas, vistas, rutinas, triggers y eventos— para que cada objeto encuentre creado aquello de lo que depende.
Elige adónde va. Junto a Destino:, abre Seleccionar servidor destino, elige una de las conexiones guardadas en el Gestor de conexiones y pulsa Conectar. En En la base, escribe la base en la que acabarán los objetos; vacía, cada objeto conserva la base que tiene en el origen. Calíope crea esa base si no existe, y reescribe las referencias de una vista para que lea de ella.
Opciones: Reemplazar en destino borra todo lo marcado antes de crear nada —primero lo que depende de las tablas, y las tablas hijas antes que sus madres—, así que repetir la misma migración es seguro; Exportar datos copia las filas de cada tabla; Omitir FK checks apaga la comprobación de claves foráneas mientras se carga cada objeto, para que las tablas puedan llegar en cualquier orden.
Pulsa Migrar. El registro da una línea por objeto, con la base a la que fue y, en una tabla, las filas copiadas. Detener para entre un objeto y el siguiente.
Las claves foráneas de las tablas copiadas se crean al final, cuando ya están todas con sus filas: el orden en que llegan deja de importar.
Entre familias de motor distintas un aviso junto a Migrar lo dice antes de ejecutar nada: el DDL de un motor no lo entiende el otro, así que no se crea nada. Sólo se copian filas, a tablas del mismo nombre que ya existan en el destino, emparejando las columnas por nombre; una tabla que el destino no tiene, o un objeto que no es tabla, se salta y el registro lo dice.
SQL Server
Una columna IDENTITY conserva sus valores (Calíope enciende IDENTITY_INSERT mientras copia), pero no su contador: en el destino la fila siguiente sigue desde el máximo copiado. Cada objeto cae en su esquema, que se crea si no existe. Con sólo el nombre de una base en En la base, cada objeto conserva su esquema: demo.dbo va a copia.dbo, y demo.rrhh a copia.rrhh.
PostgreSQL
Aquí una base es un esquema de la base conectada: En la base nombra el esquema al que van los objetos, y se crea si no existe. Los tipos que usan las tablas copiadas —un ENUM, un dominio— se crean antes; uno que ya existe en el destino se conserva tal cual, porque rehacerlo obligaría a soltar cada columna que lo usa. El search_path de una función copiada apunta al esquema de destino, así que sus triggers escriben allí y no en el origen.
> Si el destino es el mismo servidor que el origen y un objeto acabaría en su propia base, Migrar se queda apagado y un aviso dice por qué: con Reemplazar en destino, la copia borraría el original antes de leer sus filas.
> Si el servidor que necesitas no aparece en el selector, añádelo primero en el Gestor de conexiones y vuelve a abrir Migración de datos.
Palabras clave: migrar, migration, copiar, mover, servidor destino, conexión destino, selector