powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Поиск: Искать ответы на сообщение: #365669  
13 сообщений из 13, страница 1 из 1
Microsoft SQL Server / Транзакции в MS SQL Server
    #365669
cat2
Скрыть профиль Поместить в игнор-лист
Участник
Гесты и игнорируемые идут по CSS
cat2  21.04.2023, 19:03
[игнорируется]
Ссылочку дай, где это написано.
Не надо, понял. Это про то, если установлен экзотический режим - SET IMPLICIT_TRANSACTIONS ON.
По умолчание он выключен
...
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #365681
s62
Скрыть профиль Поместить в игнор-лист
Участник
cat2  21.04.2023, 19:06
[игнорируется]
cat2  21.04.2023, 19:03
[игнорируется]
Ссылочку дай, где это написано.
Не надо, понял. Это про то, если установлен экзотический режим - SET IMPLICIT_TRANSACTIONS ON.
По умолчание он выключен
Ну вот тут же написано, что если выключен, то
Цитата 
[игнорируется]
Если задано значение OFF, каждая из предыдущих инструкций T-SQL ограничена невидимыми инструкциями BEGIN TRANSACTION и COMMIT TRANSACTION. При значении OFF транзакция выполняется в режиме автофиксации.
"Автофиксация", посмотрел английскую верию страницу, это они так перевели autocommit.

https://learn.microsoft.com/ru-ru/sql/t-sql/statements/set-implicit-transactions-transact-sql?view=sql-server-ver16
То есть select (как и другие инструкции из списка) выполняется в отдельной транзакции. Перед ним невидимый BEGIN TRANSACTION, после него - невидимый COMMIT TRANSACTION.
...
Изменено: 21.04.2023, 19:15 - s62
Рейтинг: 1 / 0
Нравится: Гарыныч
Microsoft SQL Server / Транзакции в MS SQL Server
    #365707
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
s62 [игнорируется] 

Спорить с котом о том что 2 * 2 = 4 надоело )
Просто учитывай в работе, что если тебе надо транзакцию в процедуре, то придется делать begin tran ... commit.
Операторы в процедуре НЕ выполняются в одной транзакции, проверяется элементарным экспериментом.

Ну и стандартные советы, постарайся делать транзакции короткими, не надо всю процедуру оборачивать.
...
Изменено: 21.04.2023, 19:29 - Неуловимый Джо
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #365711
cat2
Скрыть профиль Поместить в игнор-лист
Участник
Гесты и игнорируемые идут по CSS
Неуловимый Джо  21.04.2023, 19:27
[игнорируется]
Операторы в процедуре НЕ выполняются в одной транзакции, проверяется элементарным экспериментом.
Ну, давай эксперимент
...
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #365715
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
cat2  21.04.2023, 19:30
[игнорируется]
Неуловимый Джо  21.04.2023, 19:27
[игнорируется]
Операторы в процедуре НЕ выполняются в одной транзакции, проверяется элементарным экспериментом.
Ну, давай эксперимент
Надоело.
Ты не приведешь ссылку, подтверждающую, что операторы в процедуре выполняются в одной транзакции?
...
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #365722
s62
Скрыть профиль Поместить в игнор-лист
Участник
Неуловимый Джо  21.04.2023, 19:27
[игнорируется]
s62 [игнорируется] 

Спорить с котом о том что 2 * 2 = 4 надоело )
Просто учитывай в работе, что если тебе надо транзакцию в процедуре, то придется делать begin tran ... commit.
Операторы в процедуре НЕ выполняются в одной транзакции, проверяется элементарным экспериментом.

Ну и стандартные советы, постарайся делать транзакции короткими, не надо всю процедуру оборачивать.
Спасибо за подсказки и советы. У нас там есть организационные моменты - кто пишет БД, кто программу, второе, что на предприятиях, где работает оборудование, не одна БД и много программ, а обычно одна БД и один экземпляр программы работает. Поэтому я написал прямо в программе вот так.
Код: Delphi
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
procedure TDataModule1.UpdateAnalyzerSources(aAnalyzerId: integer; aSources: TSources);
begin
  AdoConnection1.BeginTrans;
  try
    RemoveAnalyzerSources(aAnalyzerId); //вот тут вообще просто выполняется запрос, по некоторым причинам
    AddAnalyzerSources(aAnalyzerId, aSources); //вот тут вызывается ХП, несколько раз в цикле
    AdoConnection1.CommitTrans;
  except
    on E: Exception do
    begin
      AdoConnection1.RollbackTrans;
      Application.MessageBox(PChar(rsUpdateSourcesFail + E.Message), PChar(Application.Title), MB_OK);
    end;
  end;
end;
Это после того, как в диалоговом окне редактируются Sources заданного Analyzer и пользователь нажал ОК. Тут транзакция, как про это писал и Горбатый Ёж, должна обеспечить логическую целостность: или мы удаляем старые и добавляем новые, или если что-то пошло не так, то возвращаем, как было.
...
Изменено: 21.04.2023, 19:58 - s62
Рейтинг: 1 / 0
Нравится: Ифрит
Microsoft SQL Server / Транзакции в MS SQL Server
    #365726
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
cat2  21.04.2023, 19:54
[игнорируется]
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
USE [test]
GO

CREATE TABLE [dbo].[t](
  [t] [int] NULL
) ON [PRIMARY]

GO
insert into t (t) values (0)
insert into t (t) values (0)

go
CREATE PROCEDURE xp

AS
BEGIN
  update t SET t = 1
  update t SET t = 'A' --это откатит транзакцию
  update t SET t = 2

END
GO
select * from t
execute xp
select * from t

GO
drop table t
drop procedure xp
Это не откат транзакции, это просто результат первого селекта.

Закомментируй удаление таблицы.
Выполни скрипт.
Потом выполни отдельно селект
...
Изменено: 21.04.2023, 20:10 - Неуловимый Джо
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #365729
cat2
Скрыть профиль Поместить в игнор-лист
Участник
Гесты и игнорируемые идут по CSS
Неуловимый Джо  21.04.2023, 20:03
[игнорируется]
Это не откат транзакции, это просто результат первого селекта.
Я тоже это понял. Хреновый пример привел
...
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #365730
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
cat2  21.04.2023, 20:07
[игнорируется]
Неуловимый Джо  21.04.2023, 20:03
[игнорируется]
Это не откат транзакции, это просто результат первого селекта.
Я тоже это понял. Хреновый пример привел
почему хреновый.
как раз хороший пример.
Первый апдейт выполнился.

И ОСТАЛСЯ :)
...
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #365731
cat2
Скрыть профиль Поместить в игнор-лист
Участник
Гесты и игнорируемые идут по CSS
Неуловимый Джо  21.04.2023, 20:08
[игнорируется]
cat2  21.04.2023, 20:07
[игнорируется]
Неуловимый Джо  21.04.2023, 20:03
[игнорируется]
Это не откат транзакции, это просто результат первого селекта.
Я тоже это понял. Хреновый пример привел
почему хреновый.
как раз хороший пример.
Первый апдейт выполнился.

И ОСТАЛСЯ :)
Не было события, которое бы прервало транзакцию
...
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #365734
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
cat2  21.04.2023, 20:11
[игнорируется]
Неуловимый Джо  21.04.2023, 20:08
[игнорируется]
cat2  21.04.2023, 20:07
[игнорируется]
Неуловимый Джо  21.04.2023, 20:03
[игнорируется]
Это не откат транзакции, это просто результат первого селекта.
Я тоже это понял. Хреновый пример привел
почему хреновый.
как раз хороший пример.
Первый апдейт выполнился.

И ОСТАЛСЯ :)
Не было события, которое бы прервало транзакцию
блять )))

ладно, теперь точно все :)
...
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #365736
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
cat2 [игнорируется] 

ты ссылку-то приведешь или нет?
...
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #365738
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
cat2 [игнорируется] 

че ты уперся-то?
для тебя это так важно чтоли? :)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Поиск: Искать ответы на сообщение: #365669  
Пользователи онлайн (32): Анонимы (22), Yandex Bot, Просто Трёп 1 мин., Разум вселенной 1 мин., Брюквенные годы 1 мин., Сталкер 1 мин., sergey11 3 мин., Гарыныч 5 мин., Bing Bot 5 мин., Google Bot 6 мин., prostozevs 9 мин.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
x
x
Закрыть


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