测试存储过程而不影响数据库

use*_*680 6 sql testing unit-testing stored-procedures sql-server-2005

我需要在客户端的数据库中对存储过程进行测试.反正是否在不影响数据库中的数据的情况下测试存储过程?

例如,SP中有一个插入查询,它将更改数据库的数据.

反正有没有解决这个问题?

Val*_*mas 4

您可以在事务中运行存储过程。通过将语句放在注释行之间来使用此脚本。运行整个脚本,您的事务将处于未提交状态。然后,突出显示 ROLLBACK 或 COMMIT 行并相应执行以完成。

始终有备份。

原则上,如果可能的话,在远离客户数据的沙箱中工作。

请注意,在决定提交还是回滚时,您可能会锁定数据,这些数据可能会阻碍客户端的其他 sql 语句。

BEGIN TRANSACTION MyTransaction
GO

-- INSERT SQL BELOW


-- INSERT SQL ABOVE

GO
IF @@ERROR != 0
BEGIN
        PRINT '--------- ERROR - ROLLED BACK ---------'
        ROLLBACK TRANSACTION MyTransaction
END
ELSE
BEGIN
        PRINT '--------- SCRIPT EXECUTE VALID ---------'
        PRINT '--------- COMPLETE WITH ROLLBACK OR COMMIT NOW! ---------'
        --ROLLBACK TRANSACTION MyTransaction
        --COMMIT TRANSACTION MyTransaction
END
Run Code Online (Sandbox Code Playgroud)