我需要对客户端数据库中的存储过程运行测试。无论如何要测试存储过程而不影响数据库中的数据吗?在不影响数据库的情况下测试存储过程
例如,在SP中有一个插入查询,它将更改数据库的数据。
有没有办法解决这个问题?
我需要对客户端数据库中的存储过程运行测试。无论如何要测试存储过程而不影响数据库中的数据吗?在不影响数据库的情况下测试存储过程
例如,在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
如果SP意味着改变数据,如果你不允许的数据改变,那么如何将你的“测试”的SP?你会确保它不会死?如果它没有返回错误,但是没有插入任何数据呢?
你可以按照类似的方式去Valamas建议的,但你实际上也需要测试的SP。例如,如果特定的数据是指基于特定的参数值被插入,那么你就必须:
我无法向您展示代码,但是我已经成功地使用Visual Studio单元测试框架在.NET中执行上述代码。人们可以用NUnit或任何其他单元测试框架来做同样的事情。我没有使用Visual Studio数据库项目的数据库单元测试功能。我只是在代码中完成了上述步骤,使用ADO.NET和SqlTransaction
类来控制事务。