Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Error 7346  [new]
BuKTaP
Member

Откуда:
Сообщений: 132
Добрый день.
Есть multi-job, который отрабатывает не на всех указанных серверах и выдаёт ошибку в истории:
Cannot get the data of the row from the OLE DB provider "SQLNCLI" for linked server "SRV-BI". [SQLSTATE 42000] (Error 7346) OLE DB provider "SQLNCLI" for linked server "SRV-BI" returned message "Row handle referred to a deleted row or a row marked for deletion.". [SQLSTATE 01000] (Error 7412). The step failed.

В джобе происходит выборка данных и они загружаются/обновляются/удаляются на линкованный сервер с помощью INSERT/UPDATE/DELETE. Ошибка возникает при UPDATE или DELETE, при INSERT такого замечено не было.

Что означает эта ошибка? Каковы вероятные причины? Как с этим бороться?
Заранее, спасибо всем откликнувшимся.

P.S.: если нужно, приложу скрипт ХП, вызываемой джобом.
1 окт 13, 10:25    [14905072]     Ответить | Цитировать Сообщить модератору
 Re: Error 7346  [new]
Glory
Member

Откуда:
Сообщений: 104760
BuKTaP
Есть multi-job, который отрабатывает не на всех указанных серверах и выдаёт ошибку в истории:

У вас на многих серверах выполняется запрос к одному и тому же линкед серверу ?

Ошибка говорит о том, что вы используете грязное чтнение. И за время ваших манипуляций данные успевают измениться.
1 окт 13, 10:34    [14905132]     Ответить | Цитировать Сообщить модератору
 Re: Error 7346  [new]
BuKTaP
Member

Откуда:
Сообщений: 132
Glory, вы как всегда впереди планеты всей, за это вам отдельное спасибо :)

У вас на многих серверах выполняется запрос к одному и тому же линкед серверу ?

Запросы выполняются на разных серверах, но данные загоняются на один и тот же линкованный.

И за время ваших манипуляций данные успевают измениться

Вы имеете ввиду данные, к которым я выполняю запрос или те, которые хранятся на линкованном сервере?

Запрос на серверах делает выборку и сравнивает её с данными на линкованном сервере, после чего выполняет вставку недостающих.
Судя по всему вы имеете ввиду те данные, которые уже успели измениться на линкованном сервере. Я правильно понимаю?
Как с этим бороться? Сделать не multi-job, а для каждого сервера свой с разным расписанием?
1 окт 13, 10:46    [14905209]     Ответить | Цитировать Сообщить модератору
 Re: Error 7346  [new]
Glory
Member

Откуда:
Сообщений: 104760
BuKTaP
Вы имеете ввиду данные, к которым я выполняю запрос или те, которые хранятся на линкованном сервере?

Разумеется на ликованном. Ошибка же от него
BuKTaP
Как с этим бороться? Сделать не multi-job, а для каждого сервера свой с разным расписанием?

Менять код. Про транзакции слышали ?
1 окт 13, 10:48    [14905223]     Ответить | Цитировать Сообщить модератору
 Re: Error 7346  [new]
BuKTaP
Member

Откуда:
Сообщений: 132
Слышал. Если я оберну текст ХП в транзакцию, то такого происходить не будет? Увы, сейчас не возможности проверить :(
1 окт 13, 10:51    [14905237]     Ответить | Цитировать Сообщить модератору
 Re: Error 7346  [new]
Glory
Member

Откуда:
Сообщений: 104760
BuKTaP
Слышал. Если я оберну текст ХП в транзакцию, то такого происходить не будет?

Нет кнопки "Чтобы все работало"
Код придется тестировать.
Я подозреваю, что вы даже не знаете, какой конкретно запрос вызывает ошибку. И какой код при этом выполняется на линкед сервере.
1 окт 13, 10:55    [14905263]     Ответить | Цитировать Сообщить модератору
 Re: Error 7346  [new]
BuKTaP
Member

Откуда:
Сообщений: 132
Знаю, что нет такой кнопки.
Знаю, что нужно будет тестировать, но спросил на всякий случай. Вдруг вы точно сказали бы.
Знаю, какие запросы выполняются на рабочем и линкованном сервере, т. к. сам писал их.
В общем, спасибо. Направление понятно, буду бороться.
1 окт 13, 11:13    [14905398]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить