powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Microsoft SQL Server [закрыт для гостей] / Транзакции в MS SQL Server
25 сообщений из 182, страница 1 из 8
Транзакции в MS SQL Server
    #362109
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 
Участник
Привет,
раньше имел дело с Firebird, где транзакции прописывают (по крайне мере я прописывал :) ) явно. И с MySQL на сайте, где вообще без транзакций было.
Сейчас имею дело с программами, которые работают с MS SQL Server. Насколько я смутно припоминаю, в нем есть что-то насчет неявных транзакций, которые имплицитно (сами, ты этого не делаешь явно) стартуются и заканчиваются. Короче я в коде не вижу ничего про транзакции. И сам что-то делал, менял, как-то ничего про них не делал тоже. Да, программа на Delphi, компоненты для доступа - dbGo (обертка вокруг ADO).
Сейчас мне надо сделать несколько последовательных действий, которые хотелось бы выполнить в одной транзакции, чтобы или выполнить всё или откатить всё. Я вижу у компонента TAdoConnection методы BeginTrans, CommitTrans, RollbackTrans. В принципе понятно, что писать. Но вот такой вопрос, а как это будет взаимодействовать с другими процедурами, которые с неявными (или неявной) транзакциями?
Будет ли всё остальное, то, что работало до этого, работать нормально, если я напишу что-то типа
Код: Delphi
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Adoconnection.BeginTrans
try
  ...
  ...
  AdoConnection.CommitTrans;
except
  ...
  AdoConnection.RollbackTrans;
  ...
end;
После того, как это выполнится, последующие запросы и вызовы ХП будут ли работать норм?

Понятно, что можно поэкспериментировать, но так, теоретически, кто-нибудь может сказать что-то про это?
...
Изменено: 18.04.2023, 17:33 - s62
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #362125
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 
Участник
s62 [игнорируется] 

почитал вот это https://learn.microsoft.com/ru-ru/sql/t-sql/language-elements/transactions-transact-sql?view=sql-server-ver16
похоже, что должно работать, что следующий запрос автоматически стартует новую транзакцию.
...
Рейтинг: 2 / 0
Нравится: PaNik, Гарыныч
Транзакции в MS SQL Server
    #362604
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Главное понимать , что нет вложенных транзакций. При таком подходе.

В стэке xp не надо использовать
Begin transaction
Commit transaction
Rollbac transaction
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #362637
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Sparrow  19.04.2023, 09:05
[игнорируется]
Rollbac transaction
не компилится [:zcry]
...
Изменено: 19.04.2023, 09:30 - PaNik
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #362767
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 
Участник
Sparrow  19.04.2023, 09:05
[игнорируется]
Главное понимать , что нет вложенных транзакций. При таком подходе.

В стэке xp не надо использовать
Begin transaction
Commit transaction
Rollbac transaction
Не совсем понял, что такое стэк хр. Это, если в теле одной хп вызывается другая хп? Да, примерно понятно, что если что-то будет откатываться так, то может наверное поломаться логика транзакций.
Кстати в субд Firebird в PSQL вообще нельзя использовать управление транзакциями, в смысле start, commit, rollback transaction. Предполагается, что хп выполняется в контексте транзакции, которая стартуется и коммитится или откатывается извне процедуры.

Спасибо за подсказку. Ну, я такое вроде и не собирался делать, теперь тем более буду знать. ) У меня по плану (надо вот сегодня дописать и потестировать), там один запрос и одна ХП выполняются. Ну вот перед этим соответстенно вручную собираюсь стартовать транзакцию, а в конце завершать или откатывать.
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #362968
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 
Участник
Работает нормально, после выполнения этого другие процедуры тоже нормально пишут данные в БД.
Единственное, не помню точно, сталкивался с этим раньше или нет, думал, что в самой Delphi это не нужно: имена параметров хп начинаются с @. Сначала попробовал без @ вот так (изменил в примере название хп и параметра, типа соглашение о нераспространении :) ):
Код: Delphi
1.
    adoStoredProcBumBumBum.Parameters.ParamByName('Param1').Value := aParam1;
Пишет, не нашел такой параметр. А вот так заработало:
Код: Delphi
1.
    adoStoredProcBumBumBum.Parameters.ParamByName('@Param1').Value := aParam1;
...
Изменено: 19.04.2023, 15:33 - s62
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #362972
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
s62  19.04.2023, 15:32
[игнорируется]
Работает нормально, после выполнения этого другие процедуры тоже нормально пишут данные в БД.
Единственное, не помню точно, сталкивался с этим раньше или нет, думал, что в самой Delphi это не нужно: имена параметров хп начинаются с @. Сначала попробовал без @ вот так (изменил в примере название хп и параметра, типа соглашение о нераспространении :) ):
Код: Delphi
1.
    adoStoredProcBumBumBum.Parameters.ParamByName('Param1').Value := aParam1;
Пишет, не нашел такой параметр. А вот так заработало:
Код: Delphi
1.
    adoStoredProcBumBumBum.Parameters.ParamByName('@Param1').Value := aParam1;
в Delphi от используемых компонент доступа к данным сильно зависит, непосредственно dbGo не юзал, не подскажу [:unsure]
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #363000
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
s62  19.04.2023, 11:35
[игнорируется]
Sparrow  19.04.2023, 09:05
[игнорируется]
Главное понимать , что нет вложенных транзакций. При таком подходе.

В стэке xp не надо использовать
Begin transaction
Commit transaction
Rollbac transaction
Не совсем понял, что такое стэк хр. Это, если в теле одной хп вызывается другая хп? Да, примерно понятно, что если что-то будет откатываться так, то может наверное поломаться логика транзакций.
Кстати в субд Firebird в PSQL вообще нельзя использовать управление транзакциями, в смысле start, commit, rollback transaction. Предполагается, что хп выполняется в контексте транзакции, которая стартуется и коммитится или откатывается извне процедуры.

Спасибо за подсказку. Ну, я такое вроде и не собирался делать, теперь тем более буду знать. ) У меня по плану (надо вот сегодня дописать и потестировать), там один запрос и одна ХП выполняются. Ну вот перед этим соответстенно вручную собираюсь стартовать транзакцию, а в конце завершать или откатывать.
После создания транзакции, надо там же её завершить или откатить.
...
Рейтинг: 1 / 0
Нравится: Гарыныч
Транзакции в MS SQL Server
    #363001
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Sparrow  19.04.2023, 16:12
[игнорируется]
s62  19.04.2023, 11:35
[игнорируется]
Sparrow  19.04.2023, 09:05
[игнорируется]
Главное понимать , что нет вложенных транзакций. При таком подходе.

В стэке xp не надо использовать
Begin transaction
Commit transaction
Rollbac transaction
Не совсем понял, что такое стэк хр. Это, если в теле одной хп вызывается другая хп? Да, примерно понятно, что если что-то будет откатываться так, то может наверное поломаться логика транзакций.
Кстати в субд Firebird в PSQL вообще нельзя использовать управление транзакциями, в смысле start, commit, rollback transaction. Предполагается, что хп выполняется в контексте транзакции, которая стартуется и коммитится или откатывается извне процедуры.

Спасибо за подсказку. Ну, я такое вроде и не собирался делать, теперь тем более буду знать. ) У меня по плану (надо вот сегодня дописать и потестировать), там один запрос и одна ХП выполняются. Ну вот перед этим соответстенно вручную собираюсь стартовать транзакцию, а в конце завершать или откатывать.
После создания транзакции, надо там же её завершить или откатить.
https://minyurov.files.wordpress.com/2014/10/microsoft-sql-server-2012-t-sql.pdf
...
Рейтинг: 1 / 0
Нравится: s62
Транзакции в MS SQL Server
    #363002
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
s62  19.04.2023, 11:35
[игнорируется]
Sparrow  19.04.2023, 09:05
[игнорируется]
Главное понимать , что нет вложенных транзакций. При таком подходе.

В стэке xp не надо использовать
Begin transaction
Commit transaction
Rollbac transaction
Не совсем понял, что такое стэк хр. Это, если в теле одной хп вызывается другая хп? Да, примерно понятно, что если что-то будет откатываться так, то может наверное поломаться логика транзакций.
Кстати в субд Firebird в PSQL вообще нельзя использовать управление транзакциями, в смысле start, commit, rollback transaction. Предполагается, что хп выполняется в контексте транзакции, которая стартуется и коммитится или откатывается извне процедуры.

Спасибо за подсказку. Ну, я такое вроде и не собирался делать, теперь тем более буду знать. ) У меня по плану (надо вот сегодня дописать и потестировать), там один запрос и одна ХП выполняются. Ну вот перед этим соответстенно вручную собираюсь стартовать транзакцию, а в конце завершать или откатывать.
На стороне сервера там может быть много вложенных процедур.
И их разработчиков. Вот им надо запретить. Делать транзакции.
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #363003
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
PaNik  19.04.2023, 09:29
[игнорируется]
Sparrow  19.04.2023, 09:05
[игнорируется]
Rollbac transaction
не компилится [:zcry]
Зануда.
...
Рейтинг: 1 / 0
Нравится: Гарыныч
Транзакции в MS SQL Server
    #363006
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Sparrow  19.04.2023, 16:16
[игнорируется]
s62  19.04.2023, 11:35
[игнорируется]
Sparrow  19.04.2023, 09:05
[игнорируется]
Главное понимать , что нет вложенных транзакций. При таком подходе.

В стэке xp не надо использовать
Begin transaction
Commit transaction
Rollbac transaction
Не совсем понял, что такое стэк хр. Это, если в теле одной хп вызывается другая хп? Да, примерно понятно, что если что-то будет откатываться так, то может наверное поломаться логика транзакций.
Кстати в субд Firebird в PSQL вообще нельзя использовать управление транзакциями, в смысле start, commit, rollback transaction. Предполагается, что хп выполняется в контексте транзакции, которая стартуется и коммитится или откатывается извне процедуры.

Спасибо за подсказку. Ну, я такое вроде и не собирался делать, теперь тем более буду знать. ) У меня по плану (надо вот сегодня дописать и потестировать), там один запрос и одна ХП выполняются. Ну вот перед этим соответстенно вручную собираюсь стартовать транзакцию, а в конце завершать или откатывать.
На стороне сервера там может быть много вложенных процедур.
И их разработчиков. Вот им надо запретить. Делать транзакции.
я там чуть выше сцылку привел, почитай там про транзакции
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #363007
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Sparrow  19.04.2023, 16:18
[игнорируется]
PaNik  19.04.2023, 09:29
[игнорируется]
Sparrow  19.04.2023, 09:05
[игнорируется]
Rollbac transaction
не компилится [:zcry]
Зануда.
грешен, каюсь
...
Рейтинг: 1 / 0
Нравится: Гарыныч
Транзакции в MS SQL Server
    #363008
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 
Участник
Sparrow  19.04.2023, 16:16
[игнорируется]
...

На стороне сервера там может быть много вложенных процедур.
И их разработчиков. Вот им надо запретить. Делать транзакции.
Ага, примерно понятно, чтобы был какой-то единый порядок, когда начали транзакцию, когда закончили.
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #363010
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
s62  19.04.2023, 16:20
[игнорируется]
Sparrow  19.04.2023, 16:16
[игнорируется]
...

На стороне сервера там может быть много вложенных процедур.
И их разработчиков. Вот им надо запретить. Делать транзакции.
Ага, примерно понятно, чтобы был какой-то единый порядок, когда начали транзакцию, когда закончили.
почитай про транзакции в MS SQL Server по моей ссылке выше, там немного чесслово
...
Рейтинг: 1 / 0
Нравится: Гарыныч
Транзакции в MS SQL Server
    #363011
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
PaNik  19.04.2023, 16:19
[игнорируется]
Sparrow  19.04.2023, 16:16
[игнорируется]
s62  19.04.2023, 11:35
[игнорируется]
Sparrow  19.04.2023, 09:05
[игнорируется]
Главное понимать , что нет вложенных транзакций. При таком подходе.

В стэке xp не надо использовать
Begin transaction
Commit transaction
Rollbac transaction
Не совсем понял, что такое стэк хр. Это, если в теле одной хп вызывается другая хп? Да, примерно понятно, что если что-то будет откатываться так, то может наверное поломаться логика транзакций.
Кстати в субд Firebird в PSQL вообще нельзя использовать управление транзакциями, в смысле start, commit, rollback transaction. Предполагается, что хп выполняется в контексте транзакции, которая стартуется и коммитится или откатывается извне процедуры.

Спасибо за подсказку. Ну, я такое вроде и не собирался делать, теперь тем более буду знать. ) У меня по плану (надо вот сегодня дописать и потестировать), там один запрос и одна ХП выполняются. Ну вот перед этим соответстенно вручную собираюсь стартовать транзакцию, а в конце завершать или откатывать.
На стороне сервера там может быть много вложенных процедур.
И их разработчиков. Вот им надо запретить. Делать транзакции.
я там чуть выше сцылку привел, почитай там про транзакции
В ms sql нет вложенных транзакций, есть извращённые способы это обойти. Но это не вечно. Не честно.
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #363013
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Sparrow  19.04.2023, 16:22
[игнорируется]
PaNik  19.04.2023, 16:19
[игнорируется]
Sparrow  19.04.2023, 16:16
[игнорируется]
s62  19.04.2023, 11:35
[игнорируется]
Sparrow  19.04.2023, 09:05
[игнорируется]
...
Не совсем понял, что такое стэк хр. Это, если в теле одной хп вызывается другая хп? Да, примерно понятно, что если что-то будет откатываться так, то может наверное поломаться логика транзакций.
Кстати в субд Firebird в PSQL вообще нельзя использовать управление транзакциями, в смысле start, commit, rollback transaction. Предполагается, что хп выполняется в контексте транзакции, которая стартуется и коммитится или откатывается извне процедуры.

Спасибо за подсказку. Ну, я такое вроде и не собирался делать, теперь тем более буду знать. ) У меня по плану (надо вот сегодня дописать и потестировать), там один запрос и одна ХП выполняются. Ну вот перед этим соответстенно вручную собираюсь стартовать транзакцию, а в конце завершать или откатывать.
На стороне сервера там может быть много вложенных процедур.
И их разработчиков. Вот им надо запретить. Делать транзакции.
я там чуть выше сцылку привел, почитай там про транзакции
В ms sql нет вложенных транзакций, есть извращённые способы это обойти. Но это не вечно. Не честно.
там русским по-белому про @@trancount написано
...
Рейтинг: 1 / 0
Нравится: Гарыныч
Транзакции в MS SQL Server
    #363019
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 
Участник
PaNik  19.04.2023, 16:14
[игнорируется]
Sparrow  19.04.2023, 16:12
[игнорируется]
s62  19.04.2023, 11:35
[игнорируется]
Sparrow  19.04.2023, 09:05
[игнорируется]
Главное понимать , что нет вложенных транзакций. При таком подходе.

В стэке xp не надо использовать
Begin transaction
Commit transaction
Rollbac transaction
Не совсем понял, что такое стэк хр. Это, если в теле одной хп вызывается другая хп? Да, примерно понятно, что если что-то будет откатываться так, то может наверное поломаться логика транзакций.
Кстати в субд Firebird в PSQL вообще нельзя использовать управление транзакциями, в смысле start, commit, rollback transaction. Предполагается, что хп выполняется в контексте транзакции, которая стартуется и коммитится или откатывается извне процедуры.

Спасибо за подсказку. Ну, я такое вроде и не собирался делать, теперь тем более буду знать. ) У меня по плану (надо вот сегодня дописать и потестировать), там один запрос и одна ХП выполняются. Ну вот перед этим соответстенно вручную собираюсь стартовать транзакцию, а в конце завершать или откатывать.
После создания транзакции, надо там же её завершить или откатить.
https://minyurov.files.wordpress.com/2014/10/microsoft-sql-server-2012-t-sql.pdf
Блин, а я как раз вот это начал изучать, да потом забросил. Это вот в августе того года раздел изучал.
MSSQL_learn1.jpg
MSSQL_learn2.jpg
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #363021
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
s62  19.04.2023, 16:25
[игнорируется]
PaNik  19.04.2023, 16:14
[игнорируется]
Sparrow  19.04.2023, 16:12
[игнорируется]
s62  19.04.2023, 11:35
[игнорируется]
Sparrow  19.04.2023, 09:05
[игнорируется]
...
Не совсем понял, что такое стэк хр. Это, если в теле одной хп вызывается другая хп? Да, примерно понятно, что если что-то будет откатываться так, то может наверное поломаться логика транзакций.
Кстати в субд Firebird в PSQL вообще нельзя использовать управление транзакциями, в смысле start, commit, rollback transaction. Предполагается, что хп выполняется в контексте транзакции, которая стартуется и коммитится или откатывается извне процедуры.

Спасибо за подсказку. Ну, я такое вроде и не собирался делать, теперь тем более буду знать. ) У меня по плану (надо вот сегодня дописать и потестировать), там один запрос и одна ХП выполняются. Ну вот перед этим соответстенно вручную собираюсь стартовать транзакцию, а в конце завершать или откатывать.
После создания транзакции, надо там же её завершить или откатить.
https://minyurov.files.wordpress.com/2014/10/microsoft-sql-server-2012-t-sql.pdf
Блин, а я как раз вот это начал изучать, да потом забросил. Это вот в августе того года раздел изучал.
MSSQL_learn1.jpg
MSSQL_learn2.jpg
прочитай книжку (можно выборочно) по моей ссылке - хоть и по древней версии - понимание работы сервака организует
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #363022
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
PaNik  19.04.2023, 16:23
[игнорируется]
Sparrow  19.04.2023, 16:22
[игнорируется]
PaNik  19.04.2023, 16:19
[игнорируется]
Sparrow  19.04.2023, 16:16
[игнорируется]
s62  19.04.2023, 11:35
[игнорируется]
...
На стороне сервера там может быть много вложенных процедур.
И их разработчиков. Вот им надо запретить. Делать транзакции.
я там чуть выше сцылку привел, почитай там про транзакции
В ms sql нет вложенных транзакций, есть извращённые способы это обойти. Но это не вечно. Не честно.
там русским по-белому про @@trancount написано
Ну и что? Знаю такой счётчик. Что это меняеет?

Например каждый раз его проверять? Это. От очень-очень старых версий сибайз осталось. Изврат.
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #363027
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Sparrow  19.04.2023, 16:26
[игнорируется]
PaNik  19.04.2023, 16:23
[игнорируется]
Sparrow  19.04.2023, 16:22
[игнорируется]
PaNik  19.04.2023, 16:19
[игнорируется]
Sparrow  19.04.2023, 16:16
[игнорируется]
...
я там чуть выше сцылку привел, почитай там про транзакции
В ms sql нет вложенных транзакций, есть извращённые способы это обойти. Но это не вечно. Не честно.
там русским по-белому про @@trancount написано
Ну и что? Знаю такой счётчик. Что это меняеет?

Например каждый раз его проверять? Это. От очень-очень старых версий сибайз осталось. Изврат.
всегда писал примерно так (тут совсем псевдокод):
procerdure <proc_name>
<параметры>
as
begin
begin try
-- тут объявляем переменные, временные таблицы и т.п.
-- тут всякие прочие операции (заполнение/модификация данных во времянках и т.п.)
-- ... (возможно еще что-то)
-- тут (в конце процедуры) - финальная модификация данных
begin tran
... -- модифицируем данные
commit tran;
end try
begin catch
if @@trancount > 0 roolback;
...
end catch;
end;
go
...
Изменено: 19.04.2023, 16:41 - PaNik
Рейтинг: 1 / 0
Нравится: Гарыныч
Транзакции в MS SQL Server
    #363031
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 
Участник
PaNik  19.04.2023, 16:26
[игнорируется]
прочитай книжку (можно выборочно) по моей ссылке - хоть и по древней версии - понимание работы сервака организует
Посмотрю. Ну я думаю, что в общем серверы БД в каких-то общих принципах схоже устроены. Но понятно, что у каждого есть свои особенности, в том числе у MS SQL server. Вот может про них в частности посмотрю. У меня по нынешней работе это такое, немного сбоку, в принципе другой человек вносил в основном изменения в БД, но приходилось и запросы писать и в БД изменения вносить.
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #363032
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
PaNik  19.04.2023, 16:31
[игнорируется]
Sparrow  19.04.2023, 16:26
[игнорируется]
PaNik  19.04.2023, 16:23
[игнорируется]
Sparrow  19.04.2023, 16:22
[игнорируется]
PaNik  19.04.2023, 16:19
[игнорируется]
...
В ms sql нет вложенных транзакций, есть извращённые способы это обойти. Но это не вечно. Не честно.
там русским по-белому про @@trancount написано
Ну и что? Знаю такой счётчик. Что это меняеет?

Например каждый раз его проверять? Это. От очень-очень старых версий сибайз осталось. Изврат.
всегда писал примерно так (тут совсем пседокод):
procerdure <proc_name>
<паратметры>
as
begin
begin try
begin tran
... --
commit tran;
end try
begin catch
if @@trancount > 0 roolback;
...
end catch;
end;
go
Ну и чего таким подходом добился?
Везде и всегда копировать этот код
На каждой процедуре.?

Нет вложенных транзакций. Надо где-то начать и закончить. Или откатить.
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #363037
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
s62  19.04.2023, 16:39
[игнорируется]
PaNik  19.04.2023, 16:26
[игнорируется]
прочитай книжку (можно выборочно) по моей ссылке - хоть и по древней версии - понимание работы сервака организует
Посмотрю. Ну я думаю, что в общем серверы БД в каких-то общих принципах схоже устроены. Но понятно, что у каждого есть свои особенности, в том числе у MS SQL server. Вот может про них в частности посмотрю. У меня по нынешней работе это такое, немного сбоку, в принципе другой человек вносил в основном изменения в БД, но приходилось и запросы писать и в БД изменения вносить.
Книжка очень хорошая и написана простым языком, именно с учетом специфики MS SQL Server. за выходные прочитать можно.
изображение_2023-04-19_164448459.jpg
...
Изменено: 19.04.2023, 16:46 - PaNik
Рейтинг: 2 / 0
Нравится: s62, Гарыныч
Транзакции в MS SQL Server
    #363040
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
PaNik  19.04.2023, 16:31
[игнорируется]
Sparrow  19.04.2023, 16:26
[игнорируется]
PaNik  19.04.2023, 16:23
[игнорируется]
Sparrow  19.04.2023, 16:22
[игнорируется]
PaNik  19.04.2023, 16:19
[игнорируется]
...
В ms sql нет вложенных транзакций, есть извращённые способы это обойти. Но это не вечно. Не честно.
там русским по-белому про @@trancount написано
Ну и что? Знаю такой счётчик. Что это меняеет?

Например каждый раз его проверять? Это. От очень-очень старых версий сибайз осталось. Изврат.
всегда писал примерно так (тут совсем пседокод):
procerdure <proc_name>
<паратметры>
as
begin
begin try
begin tran
... --
commit tran;
end try
begin catch
if @@trancount > 0 roolback;
...
end catch;
end;
go
Ты так пытаешься всегда и везде проверить что транзакция уже была .
И добротный код везде дублируешь. Дибильный код всегда и везде.

Зачем?
...
Изменено: 19.04.2023, 16:51 - Sparrow
Рейтинг: 0 / 0
25 сообщений из 182, страница 1 из 8
Форумы / Microsoft SQL Server [закрыт для гостей] / Транзакции в MS SQL Server
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (3): Анонимы (3)
Пользователи онлайн (163): Анонимы (149), Barkrowler, sergey11, Bing Bot, Yandex Bot, Буся 1 мин., Кусь 1 мин., basename 1 мин., say no 2 мин., Т-Миронов 3 мин., Брюквенные годы 4 мин., Biene Maja 5 мин., s62 5 мин., С чистого листа 6 мин., Сталкер 8 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]