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

Cómo hacer una consulta de transferencia DELETE en SQL Server

En SQL Server, el OPENQUERY La función de conjunto de filas le permite 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 DELETE consulta de transferencia.

Ejemplo

Supongamos que el servidor vinculado se llama Homer tiene una tabla en Pets base de datos llamada Cats con los siguientes datos.

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

Resultado:

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

Y digamos que queremos eliminar uno de los gatos de la base de datos.

Podríamos hacer eso usando un DELETE consulta de transferencia contra el servidor vinculado, como esta.

DELETE OPENQUERY (
    Homer, 
    'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 2'
    );

Resultado:

(1 row affected)

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  |
| 3       | Short Tail |
+---------+------------+

Como era de esperar, la segunda fila se eliminó y ahora solo quedan dos filas.

Una cosa a tener en cuenta es que OPENQUERY no acepta variables para sus argumentos.