170 похожих чатов

Доброго всем вечера, пара вопросов, может кто работал уже с

этим:
Небольшое введение:
1 Проект на шарпах
2 Создаем транзакцию
3 Вызываем функции, процедуры в mssql
4 В случае ошибок роллбэкаем все изменения благодаря транзакции из шага 2
Планируется изменить пункт 3 -- "Вызываем функции, процедуры, SQLCLR (внутри которой могут вызываться также функции и процедуры из mssql) в mssql"

Так вот сами вопросы:
1 Внутри SQLCLR какие он будет видеть данные чистые или грязные — потому что в mssql часто используется with(nolock) и это надо сохранить?
2 Если возникают ошибки внутри SQLCLR или после выполнения SQLCLR — ролбэкнится ли все, что изменилось в процессе SQLCLR?

11 ответов

24 просмотра

Если вы используете EF Core то это будет зависеть от IsolationLevel

Sergey- Автор вопроса

То есть я могу вытащить транзакцию из обращающегося ко мне mssql и в случае чего откатить ее всю

Sergey
То есть я могу вытащить транзакцию из обращающегос...

Не совсем Вас понял. Это Вы обращаетесь за данными в MySQL а не он к вам. Да если вы начали транзакцию вы можете либо ее совершить либо откатить.

Sergey
То есть я могу вытащить транзакцию из обращающегос...

И да если у вас есть вложенные транзакции они тоже откатятся. ROLLBACK TRANSACTION (Transact-SQL) Инструкция ROLLBACK TRANSACTION без аргумента savepoint_name или transaction_name откатывает изменения на начало транзакции. При наличии вложенных транзакций эта инструкция откатывает все внутренние транзакции к началу самой внешней инструкции BEGIN TRANSACTION.

Sergey- Автор вопроса

Во, спасибо большое, это то что нужно И я правильно понимаю, что вложенная транзакция также может инициировать откат внешней транзакции в случае ошибки?

Sergey
Во, спасибо большое, это то что нужно И я правиль...

Да вы можете из вложенной транзакции откатиться на любую точку https://learn.microsoft.com/ru-ru/sql/t-sql/language-elements/rollback-transaction-transact-sql?view=sql-server-ver16

Eric Theodore Cartman
Да вы можете из вложенной транзакции откатиться на...

я бы осторожно относился к этому в контексте SQLCLR. см. лучше https://learn.microsoft.com/en-us/sql/relational-databases/clr-integration-data-access-transactions/transaction-lifetimes?view=sql-server-ver16 там есть тонкости с вложенными транзакциями как раз.

Sergey- Автор вопроса
Alexander Shelemin
я бы осторожно относился к этому в контексте SQLCL...

Да, на это как раз и смотрю, но не могу до конца понять. Нельзя откатить внешнюю из clr или не получишь отката внешней если вдруг возникла ошибка в clr

Sergey
screenshot Да, на это как раз и смотрю, но не могу до конца п...

зачем вы вообще решили юзать sqlclr?:) тем более для всего, как я понял? sqlclr обычно используют точечно для специфического функционала. Да и то лучше обойтись по-моему, если есть возможность на клиенте это сделать

Sergey
screenshot Да, на это как раз и смотрю, но не могу до конца п...

Всегда есть как минимум 2а выхода. Вы можете попробовать создать модуль CLR, который не оперирует транзакциями и юзать его в процедуре которая будет управлять транзакциями. Но скорее всего это потребует пересмотр логики :(

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Карта сайта