У меня есть вид, который использует связанный сервер для извлечения данных с удаленного сервера в SQL Server. При каждом просмотре представления возвращаемые результаты различаются. Например, однократное выполнение может возвращать 100 строк записей, но во второй раз выполнения строки возвращаются в 120 строк. Любые идеи, в чем причина?Результаты, полученные с помощью связанного с ним сервера, могут отличаться?
ответ
Данные на связанном сервере изменены между выполнением?
Нет, данные на связанном сервере исправлены. Я получаю его для присоединения к локальному серверу. –
Включается ли локальная таблица с изменением? –
нет также ........... –
Является ли ваш SQL Server полностью исправленным? В SQL Server 2008 и 2005 исправлены ошибки, связанные с неправильными результатами запросов от связанных серверов.
Here один пример:
969997 FIX: Вы получаете неверный результат при запросе данных из связанного сервера, который создается с помощью индекса поставщика OLE DB в SQL Server 2005 или SQL Server 2008
Нет, SQL Server 2005 SP3 не исправлен на моем SQL Server! Я попытаюсь сначала исправить его, а затем посмотреть, как это сделать. –
Обязательно проверьте удаленный сервер тоже :) – KenJ
Я установил как локальный, так и удаленный сервер вместе с SP3 и исправлением. Теперь возвращенные результаты меньше, чем есть, и несогласованность данных все еще происходит ...... –
Связанный ли сервер также SQL Server? Если нет, может быть, багги? Я видел нечетные результаты, например, из-за старого драйвера ODBC Informix. Можете ли вы запустить что-то похожее на SQL Profiler на связанном сервере, чтобы узнать, какую команду он получает?
Я стал свидетелем нечетных результатов связанного сервера, которые являются продуктом недетерминированности, написанного в самом SQL, I.e. a TOP
запрос, написанный без предложения ORDER BY
.
This problem, например, где chap имел несколько неповторимых внешних ключей, поступающих из источника таблицы в левой части связанного сервера INNER JOIN
, и хотел, чтобы 10 строк из удаленного суб-запроса справа, где конечный результат был ограничен только 10 строками, когда он должен был быть больше 10 строк.
Обязательно дайте вашему SQL быстрый взгляд на такие раритеты.
Я не уверен, что такое ответ, но (при условии, что ваши подсчеты 100 и 120 точны) не можете ли вы захватить данные из двух прогонов и сравнить их? Это может дать вам некоторые подсказки относительно того, что происходит. Например, это полностью разные данные, или это дубликаты строк (в 120 рядах строк).
Какая версия SQL Server и какой уровень исправления? –
SQL Server 2005 с пакетом обновления 2 (SP2) –