我们从外部Web服务中提取数据,将数据保存到表格中。
该表约有1900行。调度程序每天运行,表每天更新。
完成的方式是:
一旦1900行准备好作为列表,旧的1900行被删除(存储过程),新的行被添加(另一个存储过程)。
但有时外部Web服务无法正常运行。因此,旧行将被删除,但新行不会被添加。结果表格为空。
所以,这就是我解决这个问题的方法:
将当前的MyTable重命名为MyTable_06072015
将新表创建为MyTable并复制新行。
删除昨天的表格 - MyTable_06062015
我现在有几个问题:
这是解决此问题的正确方法吗? SQL服务器端是否会出现任何问题,重命名当前表,创建新表并每天删除昨天的表?
答案 0 :(得分:0)
我认为你应该告诉我们“你工作不正常”是什么意思。例如,如果由于Web服务有时不可用而获得500 http响应,则可以在删除行之前检查Web服务的状态,如果它不同于20x,则不执行任何操作。
但是,如果你不是这个意思,可能你的意思是网络服务是可用的,但由于“我不知道”而没有返回任何内容。你说你正在使用一个列表。您可以在删除行之前检查列表的长度。
你不会从sql方面遇到问题,但是如果我没有错,你只有在新的一个空的时候才删除旧的吗?正如我所说,你可以在创建/修改表之前这样做。
答案 1 :(得分:0)
您可以对1900行进行更新,以基本上覆盖预先存在的数据。但是,您说大约有1900行,因此您可能必须检查新数据行的数量是否为<旧数据行,然后删除差异。这样你就不必创建或销毁整个表格。