gratis - sql server online free
¿Cómo se cargan las bases de datos de SQL Server en entornos de alojamiento compartido? (7)
He utilizado las herramientas de RedGate Compare con el alojamiento compartido y funciona bien.
Tenemos un problema común al 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 copias de seguridad; 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 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 a medida que las tablas se importan en un orden que entra en conflicto con el esquema de la base de datos. Además, es posible que los índices no se repliquen si están configurados para generar automáticamente.
Por lo tanto, nos queda una operación desordenada:
- Cree un script en SQL 2005 que genere la base de datos en formato SQL 2000.
- Ejecute el script para crear una base de datos SQL 2000 en SQL 2000.
- Cree un script en SQL 2000 que genere la estructura de la base de datos SIN índices y claves foráneas.
- Ejecute este script en el servidor de producción. Ahora tiene una estructura de base de datos para cargar datos.
- Use SQL 2005 para transferir los datos al servidor de producción con Tareas / Importar datos.
- Use SQL 2000 para generar un script que cree la base de datos con índices y claves.
- Copie los comandos que generan los índices y las claves externas solamente. Estos se encuentran después de los comandos de creación de tabla. Nota: en SQL 2005, los índices y las claves externas se generan como uno y no se pueden separar fácilmente.
- 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 tan sucio y propenso a errores.
¿Hay algo mejor?
No debe confiar en la restauración de copias de seguridad para copiar / transferir bases de datos. Necesita usar scripts; créame, mejorará.
Scott Gu había escrito pocas publicaciones sobre este tema:
Kit de herramientas de publicación de bases de datos de SQL Server para alojamiento web
Los scripts de generación de bases de datos son complicados, pero también tienen varias ventajas que ... bueno, hacen que el dolor sea más tolerable.
En primer lugar, si trata los scripts DB como tareas reales de programación en sí mismos, puede encapsular el desorden. Si genera una secuencia de comandos una vez (utilizando una herramienta de base de datos), puede dividir los aspectos de estructura de la tabla de los aspectos de restricción (claves, índices, etc.). Del mismo modo, puede exportar los datos una vez, pero divídalos en datos del "sistema" que no se cambian con frecuencia, pero que son necesarios para una operación correcta (como impuestos o tarifas de envío, etc.), datos de "prueba" fácilmente identificables y " datos operativos que se deben mover de la versión de DB antigua a la versión de DB Nuevo (Pedidos de la semana pasada).
Los primeros 3 minutos después de que hayas logrado eso, las cosas son maravillosas: puedes 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 la misma frecuencia en términos de estructura.
Personalmente me gusta tener la estructura de cada tabla como un archivo SQL separado (y sus limitaciones como un archivo separado en un directorio separado, y son datos de prueba en un archivo, datos del sistema en otro, etc.). Por un lado, esto significa que se deben tocar varios archivos diferentes al realizar 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 la suposición de que tiene alguna posibilidad de ejecutar un script complejo que involucra muchos archivos y no está limitado a un panel de control basado en la web, que puede ser lo que está describiendo cuando dice "no somos dado el acceso a la máquina real ". Siento que no puede hacer un 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 servidor de secuencias de comandos con la suficiente facilidad.
Los scripts de generación están bien para crear los objetos de la base de datos, pero no para transportar la información de la base de datos. Por ejemplo, bases de datos específicas del cliente donde el desarrollador debe rellenar previamente algunos datos.
Uno de los problemas con los que me he encontrado es con los nuevos tipos de MAX en SQL Server 2005+. (nvarchar (max), varchar (max), etc.) Por supuesto, esto es peor cuando en realidad 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 cargar archivos de copia de seguridad y NO requiere que use sus propios scripts. Ese es el objetivo de SQL Server, ¿verdad? Para proporcionar más herramientas que sean más amigables de usar. Si la empresa de alojamiento se lleva eso, también puede pasar a MySql por su facilidad para descargar información.
WebHost4Life es un salvavidas en esta categoría. ¡Ofrecen FTP al servidor de base de datos para cargar su archivo de copia de seguridad o archivos MDF y LDF para adjuntar! 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 volvía con 500 errores.
Otra nota: no estoy seguro de que se considere más seguro. ¡Activaba conexiones externas en GoDaddy y me conectaba con Management Studio, y podía 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 el DB sea el mismo que el DB! ¡ahora todo lo que necesita hacer es contraseñas de spam contra esos cientos de DB!
Webhost4life, por otro lado, solo muestra su base de datos específica en Management Studio. Y le permiten elegir su propio nombre de base de datos y nombre de usuario, independientemente el uno del otro. Solo añaden la misma identificación única al final de los nombres de usuario y db para evitar que entren en conflicto con los demás.
Compruebe si la empresa de webhsoting proporciona myLittleBackup. Esta es definitivamente la solución más fácil para "instalar" un db desde el servidor de desarrollo al servidor sql compartido.
Respuesta para usuarios de SQL Server 2008.
Tenía el mismo problema exacto que OP pero estaba usando SQL Server 2008 y mi empresa 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 bases de datos ... vaya a través del 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 haber creado esto a través del panel de control GoDaddy dentro de su sitio web) ...
Abra Windows Explorer y encuentre el archivo xxx.sql y haga doble clic en él. La secuencia de comandos debería abrirse en SSMS. Ejecuta el script "dentro de la base de datos adecuada" ... voila, hecho.