在SQL Server Management Studio中编写破坏性查询(例如DELETE或UPDATE)时,我总是发现自己希望在不实际运行查询的情况下预览查询结果。Access非常方便,您可以执行此操作,但是我更喜欢手工编写我的SQL,可悲的是,Access非常不擅长。
所以我的问题是双重的:
是否有用于SSMS的附加程序,或提供了具有良好SQL手动编码功能的单独工具,该工具还可以预览破坏性查询的结果(类似于Access)?
是否有任何“手工”进行预览的技术或最佳做法;例如,以某种方式使用交易?
在我看来,做这种事情从根本上来说很重要,但是我似乎无法通过Google找到任何东西(我可能只是在寻找错误的东西- 我对此事非常无知)。目前,我正在采取一种比较繁琐的方法来对选择/删除/更新行进行注释和注释,并确保进行备份。当然有更好的方法了吗?
有人可以帮忙吗?
我将使用SQL SERVER 2008及以上版本中的OUTPUT子句…
输出子句(Transact-SQL)
就像是…
BEGIN TRANSACTION DELETE [table] OUTPUT deleted.* WHERE [woof] ROLLBACK TRANSACTION
INSERT和UPDATE也可以使用“插入”表。MSDN文章涵盖了所有内容。
编辑:
就像在事务中执行SELECT然后DELETE的其他建议一样,除了它实际上一起执行之外。因此,您打开一个事务,使用OUTPUT子句删除/插入/更新,并且在ALSO输出已完成的操作的同时进行了更改。然后,您可以选择回滚或提交。