我正在使用SQL Server 2012,而我正在调试执行某些INSERT INTO #temporal table SELECT
的商店过程。
有什么方法可以查看在命令中选择的数据(插入的子查询到?) 有没有办法查看插入的数据和/或插入对变化进行处理的时间表?
如果是总行数,则不是一个一个
更新:
AT合规性和公司政策要求任何修改都可以在测试过程中进行,并且很可能由其他团队进行管理。有什么方法可以避免对脚本进行任何更改吗?
主要思想是AT用户检查他们的workdesktop输出,复制并粘贴它们,而不对环境或产品做任何改变。
谢谢和亲切的问候。
答案 0 :(得分:2)
你有什么理由不能这样做:SELECT * FROM #temporal
? (并在SQL Server Management Studio中调试它,传入应用程序传入的相同参数)。
这是一种快速而肮脏的方式,但是你可能想要以另一种方式(更干净/更好)的答案这样做的一个原因是你在这里得到了更多的控制权。而且,如果您处于临时表中有多个插入的情况(希望您不是这样),您只需执行一次选择即可立即查看所有插入的行。
我仍然可能会采用另一种方式(现在我知道了)。
答案 1 :(得分:2)
如果我理解你的问题,请查看OUTPUT
条款:
从受影响的每一行返回信息或基于表达式的表达式 通过INSERT,UPDATE,DELETE或MERGE语句。这些结果可以 返回处理应用程序以用于此类事物 确认消息,存档和其他此类应用程序 要求。
例如:
INSERT INTO #temporaltable
OUTPUT inserted.*
SELECT *
FROM ...
将为您提供插入INSERT
表的temporal
语句中的所有行,这些行是从另一个表中选择的。
答案 2 :(得分:1)
我知道如果不改变脚本就无法做到这一点。但是,对于未来,如果没有允许您输入所需数据测试的调试参数,则不应编写复杂的strored proc或脚本。使它成为默认值为0的最后一个参数,您甚至不必更改调用proc的当前代码。
然后,您可以在下面的任何地方添加语句,以便检查中间结果。此外,在调试模式下,您可能始终回滚任何事务,以便错误不会影响数据。
IF @debug = 1
BEGIN
SELECT * FROM #temp
END