【问题标题】:Limiting rowcount of SELECT statements, with linked servers使用链接服务器限制 SELECT 语句的行数
【发布时间】:2010-08-19 13:53:43
【问题描述】:

我有这些链接的服务器,A 和 B。服务器 A 运行 SQL Server 2008,而 B 运行 SQL Server 2000。

我编写了一个脚本,将数据从一堆表从 B 迁移到 A。数据非常敏感,所以恐怕我不能再告诉你了。但是,我可以告诉您,我们正在讨论大量数据,最坏的情况是每个 SELECT 大约 300k 行。我有点担心内存中的数据量太大了。

我的第一个想法是我可以使用 ROWCOUNT 来限制 SELECT 并循环遍历语句,直到所有行都被传输。但是后来我在某处读到,您不能在链接服务器上使用该技术,但我现在似乎找不到对此的参考。

所以,我的问题有两个:
a) 在处理链接服务器时,您是否不能使用上述技术? (如果我的 PM 允许,我会自己测试它)。

b) 如果对 a 的回答是肯定的,关于如何保证两台服务器都能处理迁移的任何想法?

谢谢!

【问题讨论】:

  • 300k 并不是真的那么大...让它撕裂,链接服务器可以处理它。之后验证它。
  • 必须同意福斯科。除非您在 PDA 上运行这些数据库,否则这应该不是问题。

标签: sql-server tsql linked-server rowcount


【解决方案1】:

如果我理解正确,您每次选择要执行 300K,但您要迁移的整个表要大得多。如果是这种情况,您可能需要考虑 SQL Server 中可用的Bulk Import/Export options 之一。

【讨论】:

  • 感谢您的回答。可悲的是,插入操作依赖于跨服务器的一些相当复杂的连接,在要迁移的每个表之间。我以为那不可能批量做,还是我错了?
  • 您可以构建一个查询,包括您的联接,以将数据选择到数据文件中以进行批量导入。 This link 可能会提供该领域的更多信息。
【解决方案2】:

我终于让我的 PM 批准使用两台服务器的克隆版本进行一些实验。事实证明,在内存中保留这么多行似乎与 SQL Server 不匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 2022-06-17
    相关资源
    最近更新 更多