¿Recuperar miles de millones de filas del servidor remoto?
Estoy tratando de recuperar alrededor de 200 mil millones de filas de un servidor SQL remoto. Para optimizar esto, he limitado mi consulta para usar solo una columna indexada como filtro y estoy seleccionando solo un subconjunto de columnas para que la consulta se vea así:
SELECT ColA, ColB, ColC FROM <Database> WHERE RecordDate BETWEEN '' AND ''
Pero parece que a menos que limite mi consulta a un intervalo de tiempo de unas pocas horas, la consulta falla en todos los casos con el siguiente error:
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 "<>".
El tiempo de espera es probablemente un problema debido al tiempo que lleva ejecutar el plan de consulta. Como no tengo control sobre el servidor, me preguntaba si hay una buena manera de recuperar estos datos más allá de la simpleSELECT
Estoy usando. ¿Hay algún truco específico de SQL Server que pueda usar? ¿Quizás le diga al servidor remoto que pagine los datos en lugar de emitir múltiples consultas u otra cosa? ¿Alguna sugerencia sobre cómo podría mejorar esto?