una tabla soporta servidores segundo registros por otro otra optimizar lentas insertar equipo diferentes desde datos cuantas crear copiar consultas conectarse sql sql-server openrowset

sql - tabla - Insertar desde dos bases de datos diferentes del servidor



insertar registros de una base de datos a otra en sql server (5)

La respuesta dada por Simon funciona bien para mí, pero tienes que hacerlo en la secuencia correcta: primero tienes que estar en el servidor en el que deseas insertar los datos, que es [DATABASE.WINDOWS.NET]. [Basecampdev] en tu caso.

Puede intentar ver si puede seleccionar algunos datos de la tabla de facturas para asegurarse de que tiene acceso.

Select top 10 * from [DATABASE.WINDOWS.NET].[basecampdev].[dbo].[invoice]

En segundo lugar, ejecute la consulta dada por Simon para enlazar a un servidor diferente. Esta vez usa el otro servidor:

EXEC sp_addlinkedserver [BC1-PC]; -- this will create a link tempdb that you can access from where you are GO USE tempdb; GO CREATE SYNONYM MyInvoice FOR [BC1-PC].testdabse.dbo.invoice; -- Make a copy of the table and data that you can use GO

Ahora simplemente haga su declaración de inserción.

INSERT INTO [DATABASE.WINDOWS.NET].[basecampdev].[dbo].[invoice] ([InvoiceNumber] ,[TotalAmount] ,[IsActive] ,[CreatedBy] ,[UpdatedBy] ,[CreatedDate] ,[UpdatedDate] ,[Remarks]) SELECT [InvoiceNumber] ,[TotalAmount] ,[IsActive] ,[CreatedBy] ,[UpdatedBy] ,[CreatedDate] ,[UpdatedDate] ,[Remarks] FROM MyInvoice

¡Espero que esto ayude!

Estoy intentando copiar los datos de la tabla testdabse.invoice tabla basecampdev.invoice . testdabse es una base de datos local, mientras que basecampdev está en el servidor.

Mi consulta para copiar datos a otra tabla no funciona, dice

Invalid object name ''basecampdev.dbo.invoice''.

He estado leyendo esta documentation pero me resulta difícil seguirla y entenderla.

Estas son las informaciones dadas desde el servidor.

Server type: Database Engine Server name: server.database.windows.net (this is not the real name) Authentication: SQL Server Authentication Login: myusername Password: mypassword

¿Cómo puedo conectarme al servidor para poder ejecutar esta consulta?

INSERT INTO [basecampdev].[dbo].[invoice] ([InvoiceNumber] ,[TotalAmount] ,[IsActive] ,[CreatedBy] ,[UpdatedBy] ,[CreatedDate] ,[UpdatedDate] ,[Remarks]) SELECT [InvoiceNumber] ,[TotalAmount] ,[IsActive] ,[CreatedBy] ,[UpdatedBy] ,[CreatedDate] ,[UpdatedDate] ,[Remarks] FROM [testdabse].[dbo].[invoice]

Captura de pantalla


No puede copiar directamente una tabla en una base de datos del servidor de destino desde una base de datos diferente si la base de datos de origen no está en sus servidores vinculados. Pero es posible que genere scripts (esquema con datos) de la tabla deseada en una tabla temporalmente en la base de datos del servidor de origen, luego ejecute la secuencia de comandos en el servidor de destino para crear una tabla con sus datos. Finalmente, utilice INSERT INTO [DESTINATION_TABLE] seleccione * de [TEMPORARY_SOURCE_TABLE]. Después de obtener los datos en su tabla de destino, suelte la temporal.

Encontré esta solución cuando me enfrenté a la misma situación. Espero que esto le ayude también.


Parece que podría necesitar crear y consultar servidores de bases de datos vinculados en SQL Server

En el momento en que ha creado una consulta que va entre diferentes bases de datos con un nombre de 3 partes mydatabase.dbo.mytable pero necesita subir un nivel y usar un nombre de 4 partes myserver.mydatabase.dbo.mytable , consulte esta publicación en Nombramiento de cuatro partes para más información

editar
El nombre de las cuatro partes para su consulta existente sería como se muestra a continuación (¿sospecho que ya lo ha intentado?), Pero esto supone que puede "llegar a" la base de datos remota con el nombre de las cuatro partes, es posible que deba editar su host archive / registre el servidor o identifique de otro modo dónde encontrar database.windows.net .

INSERT INTO [DATABASE.WINDOWS.NET].[basecampdev].[dbo].[invoice] ([InvoiceNumber] ,[TotalAmount] ,[IsActive] ,[CreatedBy] ,[UpdatedBy] ,[CreatedDate] ,[UpdatedDate] ,[Remarks]) SELECT [InvoiceNumber] ,[TotalAmount] ,[IsActive] ,[CreatedBy] ,[UpdatedBy] ,[CreatedDate] ,[UpdatedDate] ,[Remarks] FROM [BC1-PC].[testdabse].[dbo].[invoice]

Si no puede acceder al servidor remoto, vea si puede crear un servidor de base de datos vinculado :

EXEC sp_addlinkedserver [database.windows.net]; GO USE tempdb; GO CREATE SYNONYM MyInvoice FOR [database.windows.net].basecampdev.dbo.invoice; GO

Luego, solo puede consultar a MyEmployee sin necesitar el nombre completo de cuatro partes



USE [mydb1] SELECT * INTO mytable1 FROM OPENDATASOURCE ( ''SQLNCLI'' ,''Data Source=XXX.XX.XX.XXX;Initial Catalog=mydb2;User ID=XXX;Password=XXXX'' ).[mydb2].dbo.mytable2 /* steps - 1- [mydb1] means our opend connection database 2- mytable1 means create copy table in mydb1 database where we want insert record 3- XXX.XX.XX.XXX - another server name. 4- mydb2 another server database. 5- write User id and Password of another server credential 6- mytable2 is another server table where u fetch record from it. */