40

我运行了很多在表上执行INSERT's、insert SELECT's、UPDATE's 和ALTER's 的查询,并且在开发这些查询时,运行以测试查询的各个部分是否正常工作的中间步骤可能会更改表或表内的数据。

是否可以在不实际修改数据或表结构的情况下进行查询的空运行并让 SQL Management Studio 为您提供结果?

目前我必须备份数据库,并运行查询。如果它有效,那很好,如果无效,我必须恢复数据库(这可能需要大约一个小时),并且我试图避免浪费所有这些时间来恢复数据库。

4

2 回答 2

80

使用SQL 事务进行更改,然后将其撤消。

在执行脚本之前:

BEGIN TRANSACTION;

执行脚本并完成检查后:

ROLLBACK TRANSACTION;

然后将撤消脚本中的每个更改。

COMMIT注意:确保您的脚本中没有 a !

于 2013-11-07T13:55:05.980 回答
7

开始事务,执行表操作,并回滚,如下所示:

BEGIN TRAN

UPDATE  C
SET column1 = 'XXX'
FROM table1 C

SELECT *
FROM table1
WHERE column1 = 'XXX'

ROLLBACK TRAN

这将回滚自此事务开始以来上次提交以来执行的所有操作。

于 2014-10-17T16:27:44.310 回答