sql - 在不影响数据库的情况下测试存储过程

标签 sql unit-testing sql-server-2005 testing stored-procedures

我需要对客户数据库中的存储过程进行测试。有没有办法在不影响数据库数据的情况下测试存储过程?

比如SP中有一个插入查询,会改变数据库的数据。

有什么办法可以解决这个问题吗?

最佳答案

您可以在事务中运行存储过程。通过将您的语句放在注释行之间来使用此脚本。运行整个脚本,您的事务将处于未提交状态。然后,突出显示行 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

关于sql - 在不影响数据库的情况下测试存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9764221/

相关文章:

sql - 使用 PostgreSQL 从稀疏表中检索两列、批量、随机访问

java - Oracle 11g 和数据库连接

unit-testing - 使用 nunit 对通用 htmlHelper 方法进行单元测试

unit-testing - 测试不工作 CakePHP2.0

java - 如何测试仅调用存储库(dao)层的CRUD服务?

mysql - SQL 更新查询错误

c# - 当插入为 NULL 时为 "The INSERT statement conflicted with the FOREIGN KEY constraint"

sql - 如何覆盖informix sql中 "load from"语句中的匹配键

sql - 包含变量与常量字符串 SQL Server 的执行速度要慢得多

sql - 在 where 子句中切换大小写/If