【发布时间】:2011-10-15 12:38:39
【问题描述】:
我正在尝试从远程 SQL Server 检索大约 2000 亿行。为了优化这一点,我将查询限制为仅使用索引列作为过滤器,并且仅选择列的子集以使查询看起来像这样:
SELECT ColA, ColB, ColC FROM <Database> WHERE RecordDate BETWEEN '' AND ''
但看起来除非我将查询限制在几个小时的时间窗口内,否则查询在所有情况下都会失败并出现以下错误:
OLE DB provider "SQLNCLI10" for linked server "<>" returned message "Query timeout expired".
Msg 7399, Level 16, State 1, Server M<, Line 1
The OLE DB provider "SQLNCLI10" for linked server "<>" reported an error. Execution terminated by the provider because a resource limit was reached.
Msg 7421, Level 16, State 2, Server <>, Line 1
Cannot fetch the rowset from OLE DB provider "SQLNCLI10" for linked server "<>".
超时可能是一个问题,因为执行查询计划需要时间。由于我无法控制服务器,我想知道除了我正在使用的简单 SELECT 之外,是否有一种很好的方法来检索这些数据。我可以使用任何特定于 SQL Server 的技巧吗?也许告诉远程服务器对数据进行分页而不是发出多个查询或其他什么?关于如何改进这一点的任何建议?
【问题讨论】:
标签: sql sql-server sql-server-2008