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