¿Cómo se cargan las bases de datos de SQL Server en entornos de alojamiento compartido?

StackOverflow https://stackoverflow.com/questions/245252

  •  05-07-2019
  •  | 
  •  

Pregunta

Tenemos un problema común de mover nuestra base de datos SQL 2005 de desarrollo a servidores web compartidos en empresas de alojamiento de sitios web.

Idealmente, nos gustaría un sistema que transfiera la estructura de la base de datos y los datos como una réplica exacta.

Esto se lograría comúnmente restaurando una copia de seguridad. Pero debido a que son servidores SQL compartidos, no podemos restaurar las copias de seguridad & # 8211; no tenemos acceso a la máquina real.

Podríamos generar una secuencia de comandos para crear la estructura de la base de datos, pero luego no podríamos hacer una transferencia de datos a través del elemento de menú Tareas / Importar datos porque podríamos violar las restricciones de clave externa ya que las tablas se importan en un orden que entra en conflicto con la base de datos. esquema. Además, los índices podrían no replicarse si están configurados para generar automáticamente.

Por lo tanto, nos queda una operación desordenada:

  1. Cree un script en SQL 2005 que genere la base de datos en formato SQL 2000.
  2. Ejecute el script para crear una base de datos SQL 2000 en SQL 2000.
  3. Cree un script en SQL 2000 que genere la estructura de la base de datos SIN índices y claves foráneas.
  4. Ejecute este script en el servidor de producción. Ahora tiene una estructura de base de datos para cargar datos.
  5. Use SQL 2005 para transferir los datos al servidor de producción con Tareas / Importar datos.
  6. Use SQL 2000 para generar un script que cree la base de datos con índices y claves.
  7. Copie los comandos que generan solo los índices y las claves externas. Estos se encuentran después de los comandos de creación de la tabla. Nota: En SQL 2005, los índices y las claves externas se generan como uno y no se pueden separar fácilmente.
  8. Ejecute este script en la base de datos de producción.

¡Voila! La base de datos se carga con todos los datos y claves / restricciones en su lugar. Qué sistema desordenado y propenso a errores.

¿Hay algo mejor?

¿Fue útil?

Solución

Scott Gu había escrito algunas publicaciones sobre este tema:

Kit de herramientas de publicación de bases de datos de SQL Server para alojamiento web

Otros consejos

Los scripts de generación están bien para crear los objetos de la base de datos, pero no para transportar información de la base de datos. Por ejemplo, bases de datos específicas del cliente donde se requiere que el desarrollador complete previamente algunos datos.

Uno de los problemas con los que me he encontrado con esto son los nuevos tipos MAX en SQL Server 2005+. (nvarchar (max), varchar (max), etc.) Por supuesto, esto es peor cuando está utilizando Sql Server Express, que no permite exportar más que crear sus propios scripts para crear los datos.

Recomendaría cambiar a una empresa de hosting que le permita tener la capacidad de hacer copias de seguridad de archivos FTP y NO requiera que use sus propios scripts. Ese es el objetivo de SQL Server, ¿verdad? Para proporcionar más herramientas que sean más fáciles de usar. Si la empresa de hosting se lo lleva, también puede mudarse a MySql por su facilidad para descargar información.

WebHost4Life es un salvavidas en esta categoría. ¡Ofrecen FTP al servidor de la base de datos para cargar su archivo de respaldo o archivos MDF y LDF para adjuntarlos! Estaba tan molesto cuando vi que GoDaddy tenía la restricción similar que mencionaste. Su herramienta no me dijo que era una mala importación, y no pude entender por qué mi sitio regresaba con 500 errores.

Otra nota: no estoy seguro de cuál se considera más seguro. ¡Permití conexiones externas en GoDaddy y me conecté con Management Studio, y pude ver todas las bases de datos en ese servidor! No pude acceder a ellos, pero ahora tengo esa información. ¡Un doble golpe es que GoDaddy requiere que el nombre de usuario para la base de datos sea el mismo que la base de datos! ¡ahora todo lo que necesita hacer es contraseñas de spam contra esos cientos de bases de datos!

Webhost4life, por otro lado, solo muestra su base de datos específica en Management Studio. Y le permiten elegir su propio nombre de DB y nombre de usuario, independientemente uno del otro. Solo agregan la misma identificación única al final del usuario & amp; nombres db para evitar que entren en conflicto con otros.

No debe confiar en la restauración de copias de seguridad para copiar / transferir bases de datos. Necesitas usar scripts. Confía en mí, mejorarás en eso.

He usado las herramientas RedGate Compare con alojamiento compartido y funciona bien.

Los scripts de generación de base de datos son desordenados, pero también tienen varias ventajas que ... bueno, hacen que el dolor sea más tolerable.

Primero, si trata las secuencias de comandos DB como tareas de programación reales en sí mismas, puede encapsular el desorden. Si genera una secuencia de comandos una vez (con una herramienta de base de datos), puede dividir los aspectos de la estructura de la tabla de los aspectos de restricción (claves, índices, etc.). Del mismo modo, puede exportar los datos una vez, pero dividirlos en " sistema " datos que no se cambian con frecuencia pero que son necesarios para un funcionamiento correcto (cosas como impuestos o tasas de envío, etc.), datos de 'prueba' que son fácilmente identificables y datos 'operativos' que deben trasladarse de la versión DB Antigua a la versión DB Nueva ( pedidos de la semana pasada).

Los primeros 3 minutos después de que haya logrado eso, las cosas son maravillosas: puede regenerar una nueva base de datos con o sin datos de prueba en unos minutos. Desafortunadamente, después de 3 minutos, las bases de datos no están sincronizadas, al menos en términos de datos, si no con tanta frecuencia en términos de estructura.

Personalmente me gusta tener la estructura de cada tabla como un archivo SQL separado (y sus restricciones como un archivo separado en un directorio separado, y son datos de prueba en un archivo, son datos del sistema en otro, etc.). Por un lado, esto significa que se deben tocar varios archivos diferentes al hacer un cambio, pero por otro lado, hace que sea mucho más fácil ver la granularidad de lo que se ha cambiado: todo está allí en los registros de control de versiones. (Probablemente podría estar convencido de que muchos archivos es una estrategia equivocada ...)

Todo esto se basa en el supuesto de que tiene alguna facilidad para ejecutar realmente un script complejo que involucra muchos archivos y no solo está limitado a un panel de control basado en la Web, que puede ser lo que está describiendo cuando dice " ; no tenemos acceso a la máquina real ". Creo que no puede hacer desarrollo de software personalizado y no tener algún tipo de acceso de shell en el servidor; el negocio de alojamiento es lo suficientemente competitivo como para que pueda encontrar fácilmente un host amigable con los scripts.

Compruebe si la empresa de webhsoting proporciona myLittleBackup Esta es definitivamente la solución más fácil para "instalar". una base de datos del servidor de desarrollo al servidor sql compartido

Respuesta para usuarios de SQL Server 2008.

Tuve el mismo problema exacto que OP pero estaba usando SQL Server 2008 y mi compañía de alojamiento compartido es GoDaddy. Aquí está la solución para copiar DB + los datos a la base de datos GoDaddy ...

En Visual Studio 2010, vaya a Server Explorer (en VS Express, creo que se llama explorador de bases de datos). Haga clic con el botón derecho en la base de datos y seleccione Publicar en proveedor ... esto abre el Asistente de publicación de base de datos ... vaya al asistente y creará un archivo xxx.sql en su computadora local ...

Abra SQL Server Management Studio y conéctese a la base de datos GoDaddy (ya debería haberlo creado a través del panel de control GoDaddy dentro de su sitio web) ...

Abra el explorador de Windows y busque el archivo xxx.sql y haga doble clic en él. El script debería abrirse en SSMS. Ejecute el script '' dentro de la base de datos adecuada '' ... voila, hecho.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top