【问题标题】:Results returned from a view using linked server may vary?从使用链接服务器的视图返回的结果可能会有所不同?
【发布时间】:2015-02-11 12:33:09
【问题描述】:

我有一个使用链接服务器从 SQL Server 中的远程服务器检索数据的视图。每次查看视图时,返回的结果都不同。例如,第一次执行可能会返回 100 行记录,但在第二次执行时,返回的行数是 120 行。任何想法是什么原因?

【问题讨论】:

  • 什么版本的 SQL Server 和什么补丁级别?
  • SQL Server 2005 SP2

标签: sql sql-server linked-list


【解决方案1】:

我目睹了奇怪的链接服务器结果,这些结果是写入 SQL 本身的非确定性产物,即一个没有ORDER BY 子句的TOP 查询。

This problem,例如,该 chap 有多个非唯一外键来自链接服务器 INNER JOIN 左侧的表源,并希望从远程子查询中获取 10 行右侧,最终结果本身被限制为 10 行,而它本应大于 10 行。

绝对应该让您的 SQL 快速了解这些好奇心。

【讨论】:

    【解决方案2】:

    链接服务器上的数据在执行之间发生了变化?

    【讨论】:

    • 不,链接服务器上的数据是固定的。我正在检索它以加入本地服务器。
    • 你加入的本地表有变化吗?
    【解决方案3】:

    您的 SQL Server 是否已完全修补? SQL Server 2008 和 2005 都修复了与来自链接服务器的错误查询结果相关的错误。

    Here 就是一个例子:

    969997 修复:当您从使用 SQL Server 2005 或 SQL Server 2008 中的索引 OLE DB 提供程序创建的链接服务器查询数据时收到不正确的结果

    【讨论】:

    • 不,我的 SQL Server 上没有修补 SQL Server 2005 SP3!我会先尝试修补它,然后看看如何..
    • 一定要检查远程服务器:)
    • 我已经修补了本地和远程服务器以及 SP3 和修补程序。现在,返回的结果比原来少了,数据不一致还在发生......
    【解决方案4】:

    链接服务器也是 SQL Server 吗?如果没有,也许是一个错误的驱动程序?例如,由于旧的 Informix ODBC 驱动程序,我看到了奇怪的结果。您是否能够在链接服务器上运行类似于 SQL Profiler 的东西来查看它正在接收什么命令?

    【讨论】:

      【解决方案5】:

      我不确定答案是什么,但是(假设您对 100 和 120 的计数是准确的)您不能从两次运行中捕获数据并进行比较吗?这可能会给你一些关于正在发生的事情的线索。例如,它是完全不同的数据,还是重复的行(在 120 行批次中)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-07
        • 1970-01-01
        • 2014-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多