Necesito copiar una base de datos de un servidor remoto a uno local. Intenté usar SQL Server Management Studio, pero solo se realiza una copia de seguridad en una unidad en el servidor remoto.
Algunos puntos:
- No tengo acceso al servidor remoto de manera que pueda copiar archivos;
- No tengo acceso para configurar una ruta UNC a mi servidor;
¿Alguna idea de cómo puedo copiar esta base de datos? ¿Tendré que usar herramientas de terceros?
sql
sql-server
backup
Fernando
fuente
fuente
Generate and Publish Scripts
opción. Obtengo todas las tablas y el esquema, pero no obtuve ningún dato con tablas. Cómo puedo arreglar esto.Respuestas:
En Microsoft SQL Server Management Studio, puede hacer clic con el botón derecho en la base de datos que desea respaldar y hacer clic en Tareas -> Generar secuencias de comandos.
Esto abre un asistente donde puede configurar lo siguiente para realizar una copia de seguridad decente de su base de datos, incluso en un servidor remoto :
Una vez que haya terminado, tendrá una secuencia de comandos de copia de seguridad lista frente a usted. Cree una nueva base de datos local (o remota) y cambie la primera instrucción 'USE' en el script para usar su nueva base de datos. Guarde el script en un lugar seguro y continúe y ejecútelo en su nueva base de datos vacía. Esto debería crear una base de datos local (casi) duplicada que luego puede respaldar como desee.
Si tiene acceso total a la base de datos remota, puede optar por marcar 'script de todos los objetos' en la primera ventana del asistente y luego cambiar la opción 'Base de datos de script' a True en la siguiente ventana. Sin embargo, tenga cuidado, deberá realizar una búsqueda completa y reemplazar el nombre de la base de datos en el script por una nueva base de datos que en este caso no tendrá que crear antes de ejecutar el script. Esto debería crear un duplicado más preciso, pero a veces no está disponible debido a restricciones de permisos.
fuente
Primero, otorgue permisos de control total a una ruta local en su máquina (como se muestra a continuación) con Todos. (O, alternativamente, otorgue permisos específicamente a la cuenta del Agente SQL Server).
Segundo, ejecute lo siguiente:
fuente
Para copiar datos y esquemas solamente (no copiará procedimientos almacenados, funciones, etc.), use el Asistente de importación y exportación de SQL Server, y elija Nuevo ... al elegir la base de datos de destino.
Haga clic con el botón derecho en Base de datos> Tareas> Importar datos.
Elija una fuente de datos
Elige un destino
New...
El resto es sencillo.
fuente
No puedes crear una copia de seguridad desde un servidor remoto en un disco local, simplemente no hay forma de hacerlo. Y tampoco hay herramientas de terceros para hacer esto, que yo sepa.
Todo lo que puede hacer es crear una copia de seguridad en la máquina del servidor remoto y que alguien la cierre y se la envíe.
fuente
Sé que esta es una respuesta tardía, pero tengo que hacer un comentario sobre la respuesta más votada que dice usar la opción generar scripts en SSMS.
El problema con esto es que esta opción no necesariamente genera un script en el orden de ejecución correcto porque no tiene en cuenta las dependencias.
Para bases de datos pequeñas, esto no es un problema, pero para las más grandes ciertamente lo es porque requiere reordenar manualmente ese script. Pruebe eso en la base de datos de 500 objetos;)
Desafortunadamente, en este caso, la única solución son las herramientas de terceros.
Utilicé con éxito herramientas de comparación de ApexSQL (Diff y Data Diff) para tareas similares, pero no puede equivocarse con ninguna otra que ya se mencione aquí, especialmente Red Gate.
fuente
Puede probar SQLBackupAndFTP . Creará scripts para crear todos los objetos en su base de datos e instrucciones INSERT para todas las filas en sus tablas. En cualquier base de datos, puede ejecutar este archivo de script y se volverá a crear toda la base de datos.
fuente
Mira este blog para obtener una descripción de cómo copiar una base de datos remota:
Copia de seguridad de una base de datos de SQL Server 2008 desde un entorno de alojamiento compartido
fuente
Existe la solución del 99% para obtener el archivo bak del servidor sql remoto a su PC local. Lo describí allí en mi publicación. http://www.ok.unsode.com/post/2015/06/27/remote-sql-backup-to-local-pc
En general se verá así:
ejecutar script SQL para generar archivos bak
ejecute el script sql para insertar cada archivo bak en la tabla temporal con el tipo de campo varbinary y seleccione esta fila y descargue datos
repetir anterior paso tantas veces como tenga archivos bak
ejecutar script SQL para eliminar todos los recursos temporales
eso es todo, tienes tus archivos bak en tu PC local.
fuente
Puede usar Copiar base de datos ... haga clic derecho en la base de datos remota ... seleccione tareas y use copiar base de datos ... le preguntará sobre el servidor de origen y el servidor de destino. que su origen es el remoto y el destino es su instancia local del servidor sql.
es fácil
fuente
La pandilla AppHarbor ha estado luchando con esto y ha desarrollado una solución temporal utilizando objetos de administración del servidor SQL y SqlBulkCopy.
Echa un vistazo a su publicación de blog al respecto, o ve directamente al código .
Solo lo han probado con AppHarbor, pero puede valer la pena echarle un vistazo.
fuente
Las respuestas anteriores simplemente no son correctas. Un script SQL incluso con datos no es una copia de seguridad. Una copia de seguridad es un archivo BAK que contiene la base de datos completa en su estructura actual, incluidos los índices.
Por supuesto, un archivo BAK que contiene la copia de seguridad completa con todos los datos e índices de una base de datos remota de SQL Server se puede recuperar en un sistema local.
Esto se puede hacer con software comercial, para guardar directamente un archivo BAK de respaldo en su máquina local, por ejemplo, este creará directamente una copia de seguridad desde una base de datos SQL remota en su máquina local.
fuente
Como dijo Martin Smith, si no tiene acceso a la máquina o al sistema de archivos, necesitará usar herramientas de terceros, como Red Gate o Adept para hacer una comparación en los sistemas de origen y destino. Las herramientas de Red Gate le permitirán copiar los objetos y esquemas Y los datos.
fuente
De cualquier manera, podría realizar una copia de seguridad desde una instancia remota de SQL Server en su unidad local, dado que se cumple la siguiente condición:
Ahora, al especificar el comando de copia de seguridad, use la ruta de la carpeta compartida al especificar la opción de disco.
fuente
solo prueba este:
1) Comparta una carpeta con permiso completo en su computadora
2) en su servidor SQL: panel de control -> herramientas administrativas -> servicios -> haga clic derecho en todos los servicios SQL
en la pestaña de inicio de sesión debe comenzar con su administrador de dominio
3) en el asistente de mantenimiento del servidor SQL, coloque la ubicación y la carpeta de copia de seguridad (\ yourcomputername \ sharedfoldernam)
Hice una copia de seguridad remota en 8 servidores de SQL Server 2008 en nuestra empresa
fuente
Me sorprende que nadie haya mencionado la solución de copia de seguridad con guiones ofrecida por Ola Hallengren que absolutamente le permite hacer una copia de seguridad de un DB desde un servidor remoto a una ruta UNC en su red de forma gratuita (en realidad lo estoy usando mientras escribo hacer una copia de seguridad de una base de datos desde un servidor de desarrollo al que no tengo acceso remoto que no sea a través de SSMS a un recurso compartido en mi PC de desarrollo). Esto ha estado disponible desde 2008 y funciona en SQL Server 2005 hasta 2014.
Debe asegurarse de que el recurso compartido que configuró tenga acceso suficiente: tiendo a permitir la lectura / escritura completa en el grupo de AD 'Todos' durante el proceso de copia de seguridad porque soy demasiado vago para descubrir algo más restrictivo, pero eso es Decisión personal.
Está bien utilizado, bien documentado y es muy flexible. Tiendo a poner los procs y la tabla de registro en su propia pequeña base de datos de utilidades y luego iniciarla. Si todo está en su dominio de AD y no es remoto en el sentido de que está en un servidor compartido o algo así, esto funciona muy bien.
Disculpas por agregar a un hilo muy antiguo, pero me encontré con esto cuando buscaba algo más y pensé que era una adición valiosa para cualquiera que buscara este tema.
fuente
Para 2019, recomendaría usar mssql-scripter si desea una copia de seguridad local real. Sí, son secuencias de comandos, pero puede ajustarlo para incluir lo que desee, que puede incluir todos los datos. Escribí un script bash para hacer copias de seguridad diarias automáticas usando esto en una máquina Linux. Mira mi esencia:
fuente
Podría hacerlo una vez ... Para hacer esto, debe tener un recurso compartido abierto en el servidor remoto. entonces puede colocar directamente la copia de seguridad en el recurso compartido en sí, que la ubicación predeterminada ...
Por lo general, el administrador toma la copia de seguridad y la comparte con nosotros en alguna carpeta compartida. Intenté si eso funcionaría si coloco la copia de seguridad allí. Funcionó.
fuente
Si utiliza Generar secuencias de comandos en SSMS, haga clic en el botón Avanzado. En la opción 'Generar secuencias de comandos para los objetos dependientes', haga clic en Verdadero. Al hacer clic en eso, las dependencias de cada objeto también se incluirán en el orden correcto.
fuente
Algunos programas de respaldo de terceros permiten configurar la transferencia de archivos con permisos de red específicos. Es muy útil cuando el servicio de SQL Server se ejecuta bajo una cuenta restringida y no tiene suficientes permisos de red. Intente usar EMS SQL Backup que resuelve esta tarea.
fuente
Utilizo las herramientas Redgate Backup Pro 7 para este propósito. puede crear un espejo desde el archivo de copia de seguridad en crear mosaico en otra ubicación. y puede copiar el archivo de copia de seguridad después de crearlo en la red y en el almacenamiento del host automáticamente.
fuente
Cree una carpeta compartida local, con privilegios de lectura / escritura para "todos"
Conéctese a la base de datos de destino, inicie la copia de seguridad y señale el recurso compartido como se muestra a continuación
\ mymachine \ shared_folder \ mybackup.bak
(Probado en el entorno de dominio de Windows)
fuente
Sé que esta es una publicación anterior, pero para lo que vale, he descubierto que la solución "más simple" es simplemente hacer clic derecho en la base de datos y seleccionar "Tareas" -> "Exportar aplicación de nivel de datos". Es posible que esta opción solo esté disponible porque el servidor está alojado en Azure (por lo que recuerdo haber trabajado con Azure en el pasado, el formato .bacpac era bastante común allí).
Una vez hecho esto, puede hacer clic con el botón derecho en la lista de "Bases de datos" de su servidor local y usar la "Importar aplicación de nivel de datos" para llevar los datos a su máquina local utilizando el archivo .bacpac.
Solo tenga en cuenta que la exportación podría llevar mucho tiempo. La mina tardó aproximadamente dos horas en finalizar la exportación. Sin embargo, la parte de importación es mucho más rápida.
fuente
Si está en una red local, puede compartir una carpeta en su máquina local y usarla como carpeta de destino para la copia de seguridad.
Ejemplo:
Carpeta local:
C:\MySharedFolder -> URL: \\MyMachine\MySharedFolder
Servidor SQL remoto:
Select your database -> Tasks -> Back Up -> Destination -> Add -> Apply '\\MyMachine\MySharedFolder'
fuente