![]() |
#1 |
Участник
|
Как из DAX запустить транзакцию, чтобы она блокировала таблицу во внешней MS SQL базе
DAX 2019
Собственно всё в заголовке |
|
![]() |
#2 |
Участник
|
Я бы посмотрел в сторону Connection ttsbegin\ttscommit
|
|
![]() |
#3 |
Участник
|
а это что за зверь?
вообще в DAX можно выполнить произвольный запрос SQL к базе DAX так что выполнить какой-нибудь запрос вроде (код предоставляется as is - что сразу нагуглилось) Код: BEGIN TRAN SELECT 1 FROM TABLE WITH (TABLOCKX) WAITFOR DELAY '00:02:00' ROLLBACK TRAN GO |
|
|
За это сообщение автора поблагодарили: valmictar (1). |
![]() |
#4 |
Участник
|
можно в БД добавить Linked Server на внешний MSSQL Server и бд, из текущей транзакции выполнить запрос вида SELECT * FROM [ExternalMSSQLServer].[ExternalDB].[Table] WITH (updlock)
MSDTC (он же https://en.wikipedia.org/wiki/Micros...on_Coordinator) сделает распределенную транзакцию Последний раз редактировалось Omeo; 29.11.2019 в 14:04. |
|
![]() |
#5 |
Участник
|
|
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от Omeo
![]() можно в БД добавить Linked Server на внешний MSSQL Server и бд, из текущей транзакции выполнить запрос вида SELECT * FROM [ExternalMSSQLServer].[ExternalDB].[Table] WITH (updlock)
MSDTC (он же https://en.wikipedia.org/wiki/Micros...on_Coordinator) сделает распределенную транзакцию |
|
![]() |
#7 |
Участник
|
Блокировать на чтение получится только если открыть транзакцию + сделать update записи и подождать, а потом сделать commit или abort. Но и тут никто не может запретить грязное чтение. IMHO лучше сделать дополнительное поле Blocked и работать с ним (если это возможно).
|
|
![]() |
#8 |
Участник
|
От грязного чтения защищать не надо, пусть кто хочет, тот читает, а кто не хочет - это наш случай. И в транзакции только INSERTы, нужно чтобы они полностью закончились до того, как будут прочитаны. .
Последний раз редактировалось valmictar; 29.11.2019 в 17:54. |
|
![]() |
#9 |
Участник
|
А как Вы эти самые insert-ы делаете? Разве их нельзя окружить явными командами начала и окончания транзакции? Можете привести здесь код вставки? Не обязательно детально, просто общую идею организации работы показать
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
![]() |
#10 |
Участник
|
Просто транзакции не хватает.
Решили использованием TABLOCKX Указывает, что к таблице применяется монопольная блокировка. XLOCK Указывает, что монопольные блокировки применяются и удерживаются до завершения транзакции. Если при этом указан аргумент ROWLOCK, PAGLOCK или TABLOCK, монопольная блокировка применяется к соответствующему уровню гранулярности. |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|