我运行了很多执行INSERT
的查询,在表上插入SELECT
,UPDATE
和ALTER
,在开发这些查询时,为测试查询的各个部分是否工作而运行的中间步骤可能会更改表或表中的数据。
是否可以执行查询的试运行,并让 SQL 管理工作室提供结果,而无需实际修改数据或表结构?
目前,我必须备份数据库并运行查询。如果它有效,很好,如果它不起作用,我必须恢复数据库(可能需要大约一个小时),并且我试图避免浪费所有这些时间来恢复数据库。
使用 SQL 事务进行更改,然后将其备份。
在执行脚本之前:
BEGIN TRANSACTION;
执行脚本并完成检查后:
ROLLBACK TRANSACTION;
然后,脚本中的每个更改都将被撤消。
注意:请确保您的脚本中没有COMMIT
!
开始事务,执行表操作,然后回滚,如下所示:
BEGIN TRAN
UPDATE C
SET column1 = 'XXX'
FROM table1 C
SELECT *
FROM table1
WHERE column1 = 'XXX'
ROLLBACK TRAN
这将回滚自此事务开始以来自上次提交以来执行的所有操作。