2011-05-12 8 views
17

He utilizado otras herramientas SQL y algunas me permiten ver el resultado de una consulta amenazante antes de confirmar. Me gusta este proceso de dos pasos (para poder verificar que no estoy haciendo algo malo).¿Cómo puedo "probar" una consulta SQL que modifica los datos, es decir, ver la salida antes de confirmar en el servidor sql 2008?

¿Hay alguna forma en SQL Server 2008 R2 de "ejecutar" una consulta, ver el resultado de las filas afectadas y luego elegir aceptar o descartar la confirmación?

EDIT:

También encontré otra pregunta pidiendo lo mismo con una respuesta diferente utilizando la cláusula OUTPUT.

How do I preview a destructive SQL query?

+0

posible duplicado de [¿Cómo puedo obtener una vista previa de una consulta SQL destructiva?] (Http://stackoverflow.com/questions/465083/how-do-i-preview-a-destructive-sql-query) –

Respuesta

26

Si esto es posible. Puede usar la opción de sesión SET IMPLICIT_TRANSACTIONS ON o crear una transacción explícita como se muestra a continuación.

BEGIN TRAN 

UPDATE YourTable 
SET foo=1 
/*To Review Changes can use OUTPUT clause here...*/ 
OUTPUT INSERTED.*, DELETED.* 
WHERE bar=2 


/*... or a SELECT against the table*/ 
SELECT * 
FROM YourTable 
WHERE bar=2 


-- Execute the COMMIT or ROLLBACK commands when ready 

Sin embargo, usted debe ser consciente de que su transacción abierta llevará a cabo bloqueos hasta que se complete la transacción, que puede bloquear otras transacciones por lo que este debe utilizarse con precaución en cualquier entorno multiusuario.

3
BEGIN TRAN TEST 
UPDATE TABLE_NAME 
SET Col='TEST' 

Después de ver los resultados que puede o bien COMMIT o ROLLBACK la transacción.

USE SELECT @@TRANCOUNT para ver el número de transacciones abiertas que tiene en su conexión actual.

Cuestiones relacionadas