OLE DB сообщила об изменении версии схемы между временем компиляции и ошибкой во время выполнения - PullRequest
0 голосов
/ 23 мая 2018

У меня есть запрос, который работает для архивации и удаления.Хранимая процедура получает данные со связанного сервера на другой сервер.Затем sp удаляет вставленные строки с исходного сервера.

--Table_B and A parameterized. They can change with parameter

INSERT INTO [Server_1].[DB_1].[dbo].[Table_A_1] (ColumnList1) 
--ColumnList has a lot of columns like Column1,Column2
SELECT ColumnList FROM [Server_2].[DB_2].[dbo].[Table_B_1] WHERE (Condition);
DELETE FROM [Server_2].[DB_2].[dbo].[Table_B_1] WHERE (Condition);


INSERT INTO [Server_1].[DB_1].[dbo].[Table_A_2] (ColumnList1) 
SELECT ColumnList FROM [Server_2].[DB_2].[dbo].[Table_B_2] WHERE (Condition);
DELETE FROM [Server_2].[DB_2].[dbo].[Table_B_2] WHERE (Condition);


INSERT INTO [Server_1].[DB_1].[dbo].[Table_A_3] (ColumnList1) 
SELECT ColumnList FROM [Server_2].[DB_2].[dbo].[Table_B_3] WHERE (Condition);
DELETE FROM [Server_2].[DB_2].[dbo].[Table_B_3] WHERE (Condition);


INSERT INTO [Server_1].[DB_1].[dbo].[Table_A] (ColumnList1) 
SELECT ColumnList FROM [Server_2].[DB_2].[dbo].[Table_B] WHERE (Condition);
DELETE FROM [Server_2].[DB_2].[dbo].[Table_B] WHERE (Condition);

Когда я запускаю SP вручную, он обычно работает.Но иногда SP дает ошибку, как показано ниже.Также, когда я пытаюсь запустить SP из службы Windows, он часто дает ошибку.Table_B_1, Table_B_2 и Table_B_3 собирают (они представляют собой данные для Table_B в виде чисел, файлов и т. Д.), Но Table_B (главная и важная таблица) не собирает.

Поставщик OLE DB "SQLNCLI11" для связанного сервера "Server_2"сообщил об изменении версии схемы между временем компиляции (" 185688636079091 ") и временем выполнения (" 185718681838570 ") для таблицы" "DB_2". "dbo". "Table_B" ".

Если я начал работу службыболее 50-60 раз с параметрами около 10 таблиц архивируется, а остальные нет.Мне нужно решение для этого.

Версии SQL Server одинаковы.Одна машина - это снимок машины.Версии:

Microsoft SQL Server 2016 (SP1) (KB3182545) - 13.0.4001.0 (X64)

1 Ответ

0 голосов
/ 20 августа 2018

Тот же вопрос для stackoverflow здесь .

Решения:
1. Установите исправление Microsoft, предложенное Mitch Wheat
2. Удалите псевдоним таблицы
3.Выполнить DBCC FREEPROCCACHE WITH NO_INFOMSGS; (объяснено здесь )

...