Как предотвратить регистрацию запроса Insert в распределенной транзакции?

У меня есть запрос SQL Insert внутри сохраненной процедуры для вставки строк в таблицу связанный сервер.

Поскольку хранимая процедура вызывается в родительской транзакции, этот оператор Insert пытается использовать DTC для вставки строк на связанный сервер.

Я хотел бы, чтобы избегать DTC не вмешивался.

Есть ли способ сделать это (например, подсказку), чтобы оператор Insert SQL игнорировал транзакционную область?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
5
0
1 787
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я предлагаю вам сохранить все, что вы хотите вставить в промежуточную таблицу, и после завершения процедуры запустить кросс-серверную вставку. Насколько мне известно, невозможно игнорировать транзакцию, в которой вы находитесь, если вы находитесь в процессе выполнения SProc.

Напротив, если вы используете пространство имен .NET 2.0 System.Transaction, вы можете указать конкретным операторам, что они не должны участвовать ни в какой транзакции родительской области. Это потребует от вас написать часть своей логики в коде, а не в хранимых процедурах, но это сработает.

Вот соответствующая ссылка.

Удачи, Алан.

Спасибо, Алан. Похоже, у меня единственный вариант - включить DTC для сервера без переписывания кода.

Gulzar Nazim 17.09.2008 02:34

Попробуйте использовать openquery для вызова запроса связанного сервера / sp вместо прямого вызова Это сработало для меня

так что вместо вставить в ... выберите * из mylinkedserver.pubs.dbo.authors

например ОБЪЯВИТЬ @TSQL varchar (8000), @VAR char (2) ВЫБЕРИТЕ @VAR = 'CA' SELECT @TSQL = 'SELECT * FROM OPENQUERY (MyLinkedServer,' 'SELECT * FROM pubs.dbo.authors WHERE state =' '' '' + @VAR + '' '' '' ')'

ВСТАВИТЬ В ..... EXEC (@TSQL)

Другие вопросы по теме