我遇到了一些场景,我必须在我们的生产数据库中手动删除或修改记录。这通常是应用程序无法按预期方式工作的地方。如何处理在生产环境中执行即席查询?
如何删除或更新这些记录,而不会意外删除或修改我正在使用的表中的所有记录?
交易是实现此目的的合适方式吗?
如果有帮助,我正在使用SQL Server Management Studio。
我遇到了一些场景,我必须在我们的生产数据库中手动删除或修改记录。这通常是应用程序无法按预期方式工作的地方。如何处理在生产环境中执行即席查询?
如何删除或更新这些记录,而不会意外删除或修改我正在使用的表中的所有记录?
交易是实现此目的的合适方式吗?
如果有帮助,我正在使用SQL Server Management Studio。
是的。交易总是一个好主意。
查看OUTPUT Clause。开始一个事务,使用output子句执行更新或删除语句,验证结果,然后提交事务。
我这样做:
BEGIN TRANSACTION;
DELETE table1
OUTPUT DELETED.*;
ROLLBACK TRANSACTION;
我运行,需要时间来看看结果。然后当我满意并再次运行时,将最后一条语句更改为COMMIT TRANSACTION
。
这就是说,我会尽我所能避免这样做。吓到我了。如果您发现自己可能不止一次地这样做,可以在提供此注册功能的应用程序中添加一些内容(或修复您正在清理的错误)。
是的,你可以在测试时使用TRAN
-- Start with Transaction
BEGIN TRAN OperationStart
-- Delete Items
DELETE FROM TableName
-- Where Condition
-- Update Items
UPDATE TableName
SET Column1 = 'some values'
-- Where Condition
-- Check/See the changes
SELECT * FROM TableName
-- Where Condition
-- Rollback all test operation/changes
-- Once you confirm then, COMMIT Transaction
ROLLBACK TRAN OperationStart