sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo hacer una consulta INSERT Pass-Through en SQL Server

En SQL Server, puede usar OPENQUERY para ejecutar una consulta de transferencia en un servidor vinculado.

OPENQUERY se hace referencia comúnmente en el FROM cláusula de una consulta como si fuera una tabla, pero también se puede hacer referencia a ella como la tabla de destino de un INSERT , UPDATE o DELETE declaración.

Este artículo presenta un ejemplo del uso de OPENQUERY para hacer un INSERT consulta de transferencia.

Ejemplo

Digamos que creamos una tabla en el servidor vinculado llamada Cats , en una base de datos llamada Pets .

Algo como esto:

EXEC ('
    USE  [Pets];
    CREATE TABLE [dbo].[Cats](
        [CatId] [int] IDENTITY(1,1) NOT NULL,
        [CatName] [varchar](60) NULL
    ) ON [PRIMARY];
') AT Homer;

Y ahora queremos insertar datos usando un INSERT consulta de transferencia.

Podemos hacerlo así:

INSERT OPENQUERY (
    Homer, 
    'SELECT CatName FROM Pets.dbo.Cats'
    )
VALUES 
    ( 'FluffDupp' ),
    ( 'Scratch' ),
    ( 'Long Tail' );

En este caso, el servidor vinculado se llama Homer , y estamos insertando tres valores en Pets.dbo.Cats mesa.

Comprueba los resultados

Ahora podemos ejecutar un SELECT consulta de transferencia para ver los resultados.

SELECT * FROM OPENQUERY (
    Homer, 
    'SELECT * FROM Pets.dbo.Cats'
    );

Resultado:

+---------+-----------+
| CatId   | CatName   |
|---------+-----------|
| 1       | FluffDupp |
| 2       | Scratch   |
| 3       | Long Tail |
+---------+-----------+

Tenga en cuenta que OPENQUERY no acepta variables para sus argumentos.