我想从MS SQL服务器上的ODBC连接数据库创建表的缓存副本。我们目前直接从几个excel表连接到ODBC连接并运行查询。它们需要大约1-2分钟才能完成,并且每天运行几次可以快速加起来。因此,为了尝试解决这个问题,我从ODBC连接复制了几个表并运行了一个查询,大约需要11秒。我想创建一个表的副本,并每小时更新一次。但我只想更新更改的表和行,以尝试并保持服务器负载。我想这样做作为存储过程。我对SQL不是很了解,并且想知道是否有一种半简单的方法来执行此操作
答案 0 :(得分:0)
您可以编写一个运行查询的存储过程,并稍微修改它以输出到物理表。
例如:
select a.FirstName, a.LastName, b.City, b.State, b.zip into _temp_report
from customers a join addresses b on a.customer_id = b.customer_id
在上面的示例中, into _temp_report 部分是重要的部分。它将创建一个包含查询结果的新物理表。
然后,您只需将报告指向该表即可。
您可以使用SQL Server代理创建按计划运行存储过程的作业。
显然,您需要添加一些逻辑来在每次运行存储过程时删除_temp_report表,这样您就不会在每次运行作业时都尝试重新创建它。