【问题标题】:How do I "test" a sql query that modifies data, i.e. see the output before committing in sql server 2008?如何“测试”修改数据的 sql 查询,即在 sql server 2008 中提交之前查看输出?
【发布时间】:2011-05-12 01:14:52
【问题描述】:

我使用过其他 SQL 工具,其中一些工具允许我在提交前查看威胁查询的输出。我喜欢这两个步骤的过程(所以我可以仔细检查我没有做坏事)。

SQL Server 2008 R2 中是否有一种方法可以“执行”查询,查看受影响行的输出,然后选择接受还是放弃提交?

编辑:

我还发现了另一个问题,使用 OUTPUT 子句提出了不同的答案。

How do I preview a destructive SQL query?

【问题讨论】:

标签: sql-server sql-server-2008-r2


【解决方案1】:

是的,这是可能的。您可以使用会话选项 SET IMPLICIT_TRANSACTIONS ON 或创建如下显式事务。

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

但是您应该知道,您的打开事务将保持锁定直到事务完成,这可能会阻塞其他事务,因此在任何多用户环境中都应谨慎使用。

【讨论】:

    【解决方案2】:
    BEGIN TRAN TEST
    UPDATE TABLE_NAME
    SET Col='TEST'
    

    查看结果后,您可以COMMITROLLBACK 进行交易。

    使用SELECT @@TRANCOUNT 查看您当前连接中的未处理事务数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-01
      • 2012-06-22
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多