SQL Azure: copyr tabla entre bases de datos

Estoy tratando de ejecutar el siguiente SQL:

INSERT INTO Suppliers ( [SupplierID], [CompanyName]) Select [SupplierID], [CompanyName] From [AlexDB]..Suppliers 

y obtuve un error "la reference a la database y / o el nombre del server no es compatible en esta versión del server sql"

¿Alguna idea de cómo copyr datos entre bases de datos "dentro" del server? Puedo cargar datos al cliente y luego volver al server, pero esto es muy lento.

Sé que esto es viejo, pero tenía otra solución manual para una sola vez.

Al utilizar SQL Management Studio R2 SP1 para conectarme a Azure, hago clic con el button derecho en la database de origen y selecciono generar scripts.

Durante el asistente, después de haber seleccionado mis tablas, selecciono que quiero enviar a una window de consulta, luego hago clic en Avanzado. Aproximadamente a la mitad de la window de properties hay una opción para "tipo de datos para secuencia de commands". Lo selecciono y lo cambio a "solo datos", luego termino el asistente.

Todo lo que hago entonces es verificar el script, reorganizar las inserciones para las restricciones y cambiar el uso en la parte superior para ejecutarlo en mi database de destino.

Luego hago clic con el button derecho en la database de destino y selecciono una nueva consulta, copio la secuencia de commands en ella y la ejecuto.

Hecho, los datos migraron.

espero que ayude a alguien

Desde 2015, esto se puede hacer mediante el uso de consultas de database elásticas también conocidas como consultas de bases de datos cruzadas .

Creé y usé esta plantilla, copy 1.5 millones de filas en 20 minutos:

 CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>'; CREATE DATABASE SCOPED CREDENTIAL SQL_Cnetworkingential WITH IDENTITY = '<username>', SECRET = '<password>'; CREATE EXTERNAL DATA SOURCE RemoteReferenceData WITH ( TYPE=RDBMS, LOCATION='<server>.database.windows.net', DATABASE_NAME='<db>', CREDENTIAL= SQL_Cnetworkingential ); CREATE EXTERNAL TABLE [dbo].[source_table] ( [Id] BIGINT NOT NULL, ... ) WITH ( DATA_SOURCE = RemoteReferenceData ) SELECT * INTO target_table FROM source_table 

Desafortunadamente no hay forma de hacer esto en una sola consulta.

La forma más fácil de lograrlo es usar "Data Sync" para copyr las tablas. El beneficio de esto es que también funcionará entre serveres y mantendrá sus tablas sincronizadas.

http://azure.microsoft.com/en-us/documentation/articles/sql-database-get-started-sql-data-sync/

En la práctica, no he tenido una gran experiencia con "Data Sync" ejecutándose en producción, pero está bien para trabajos de una vez.

Un problema con "Data Sync" es que creará una gran cantidad de objects "sincronizados" en su database, y eliminar la "Sincronización de datos" real del Portal de Azure puede o no eliminarlos. Siga las instrucciones en este artículo para limpiarlo todo de forma manual:

https://msgooroo.com/GoorooTHINK/Article/15141/Removing-SQL-Azure-Sync-objects-manually/5215

SQL-Azure no es compatible con la statement USE y no tiene consultas cross-db. Por lo tanto, la consulta anterior está destinada a fallar.

Si desea copyr / hacer una copy de security de la database en otro file sql azure db, puede utilizar la copy de "Mismo server" o la copy de "server cruzado" en SQL-Azure. Consulte este artículo msdn

Puede utilizar una herramienta como SQL Data Compare de Red Gate Software que puede mover los contenidos de la database de un lugar a otro y es totalmente compatible con SQL Azure. La testing gratuita de 14 días debería permitirle ver si puede hacer lo que necesita.

Divulgación completa: trabajo para Red Gate Software

Use los siguientes pasos, no hay una manera directa de hacerlo. Pero por algún truco que podamos.

Paso 1: cree otra tabla con la misma estructura de tabla de Proveedores dentro de [AlexDB], dígala como Proveedores Copia de security

Paso 2: crea una tabla con la misma estructura de tabla de proveedores dentro de DesinetworkingDB

Paso 3: habilite la synchronization de datos entre los proveedores de AlexDB … y los proveedores de DB deseados.

Paso 4: Truncar datos de AlexDB .. Proveedores

Paso 5: Copie los datos de AlexDB. Proveedores. Copia de security de AlexDB. Proveedores.

Paso 6: ahora ejecuta la synchronization

Datos copydos a DesinetworkingDB.

Una publicación anterior, pero otra opción es el asistente de migration Sql Azure

Ok, creo que encontré la respuesta, de ninguna manera. tiene que mover los datos al cliente o hacer otros trucos. Aquí un enlace al artículo con explicaciones: Limitaciones de SQL Azure: solo una database por connection. ¡ Pero cualquier otra idea es bienvenida!

Algunas opciones (más bien soluciones):

  1. Generar script con datos
  2. Usar la synchronization de datos en Azure
  3. Use MS Access (importar y luego exportar), con muchas exclusiones (como ningún GUID en Access)
  4. Use herramientas de terceros como Red Gate.

Lamentablemente, no hay una manera fácil e integrada de hacerlo hasta el momento.

Si tiene una versión estándar que tiene sp_addlinkedsrvlogin, puede configurar Servidores enlazados para la database de origen y de destino, luego puede ejecutar su inserción en la consulta.

Consulte "Soporte de SQL Server para server vinculado y consultas distribuidas en database SQL de Windows Azure" en este blog: https://azure.microsoft.com/en-us/blog/announcing-updates-to-windows-azure-sql-database /