powered by simpleCommunicator - 2.0.17     © 2024 Programmizd 02
Map
Форумы / Microsoft SQL Server [закрыт для гостей] / Транзакции в MS SQL Server
25 сообщений из 182, страница 6 из 8
Транзакции в MS SQL Server
    #365568
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гесты и игнорируемые идут по CSS
Неуловимый Джо  21.04.2023, 17:30
[игнорируется]
cat2  21.04.2023, 17:08
[игнорируется]
Неуловимый Джо  21.04.2023, 08:26
[игнорируется]
Горбатый ёж  21.04.2023, 07:07
[игнорируется]
Неуловимый Джо  21.04.2023, 00:00
[игнорируется]
...
Ты серьёзно?
Мы же про SQL Server?

https://dba.stackexchange.com/questions/46261/dont-use-a-transaction-for-stored-procedure#46266
Форумы меня не убеждают
Это ведь легко проверить, там даже тестовый код есть.
Делать мне больше нечего.
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #365570
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
cat2  21.04.2023, 17:31
[игнорируется]
Неуловимый Джо  21.04.2023, 17:08
[игнорируется]
cat2  21.04.2023, 17:08
[игнорируется]
Неуловимый Джо  21.04.2023, 08:26
[игнорируется]
Горбатый ёж  21.04.2023, 07:07
[игнорируется]
...
Мы же про SQL Server?

https://dba.stackexchange.com/questions/46261/dont-use-a-transaction-for-stored-procedure#46266
Форумы меня не убеждают
А что убедит?
Ссылка на официальную документацию
Так приведи ссылку на официальную документацию, доказывающую, что операторы внутри хранимки выполняются в одной транзакции?
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #365577
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гесты и игнорируемые идут по CSS
Неуловимый Джо  21.04.2023, 00:00
[игнорируется]
В хранимках каждый оператор в отдельной неявной транзакции.
Я тебе больше скажу. Любой единичный запрос выполняется в отдельной неявной транзакции
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #365584
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
cat2  21.04.2023, 17:40
[игнорируется]
Неуловимый Джо  21.04.2023, 00:00
[игнорируется]
В хранимках каждый оператор в отдельной неявной транзакции.
Я тебе больше скажу. Любой единичный запрос выполняется в отдельной неявной транзакции
В том числе и внутри хранимки.
Ладно не важно, не хочешь признавать ошибку )
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #365587
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
ну там на самом деле не каждый оператор конечно, есть список этих самых операторов.
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #365589
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гесты и игнорируемые идут по CSS
Неуловимый Джо  21.04.2023, 17:45
[игнорируется]
cat2  21.04.2023, 17:40
[игнорируется]
Неуловимый Джо  21.04.2023, 00:00
[игнорируется]
В хранимках каждый оператор в отдельной неявной транзакции.
Я тебе больше скажу. Любой единичный запрос выполняется в отдельной неявной транзакции
В том числе и внутри хранимки.
Ладно не важно, не хочешь признавать ошибку )
Какую?
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #365590
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гесты и игнорируемые идут по CSS
Неуловимый Джо  21.04.2023, 17:50
[игнорируется]
ну там на самом деле не каждый оператор конечно, есть список этих самых операторов.
Согласен. Select транзакций не порождает
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #365592
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
cat2  21.04.2023, 17:51
[игнорируется]
Неуловимый Джо  21.04.2023, 17:45
[игнорируется]
cat2  21.04.2023, 17:40
[игнорируется]
Неуловимый Джо  21.04.2023, 00:00
[игнорируется]
В хранимках каждый оператор в отдельной неявной транзакции.
Я тебе больше скажу. Любой единичный запрос выполняется в отдельной неявной транзакции
В том числе и внутри хранимки.
Ладно не важно, не хочешь признавать ошибку )
Какую?
Вилять начинаешь чтоли?

Ты писал.
"В самой хп никаких транзакций открывать не надо, так как по умолчанию хп выполняется в контексте одной транзакции"

Это ошибка.
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #365594
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
cat2  21.04.2023, 17:52
[игнорируется]
Неуловимый Джо  21.04.2023, 17:50
[игнорируется]
ну там на самом деле не каждый оператор конечно, есть список этих самых операторов.
Согласен. Select транзакций не порождает
Порождает.

ALTER TABLE

FETCH

REVOKE

BEGIN TRANSACTION

GRANT

SELECT (See exception below.)

CREATE

INSERT

TRUNCATE TABLE

DELETE

MERGE

UPDATE

DROP

OPEN

----------------
SELECT statements that do not select from a table do not start implicit transactions. For example SELECT GETDATE(); or SELECT 1, 'ABC'; do not require transactions.
...
Рейтинг: 1 / 0
Нравится: Гарыныч
Транзакции в MS SQL Server
    #365657
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гесты и игнорируемые идут по CSS
Неуловимый Джо  21.04.2023, 17:54
[игнорируется]
cat2  21.04.2023, 17:51
[игнорируется]
Неуловимый Джо  21.04.2023, 17:45
[игнорируется]
cat2  21.04.2023, 17:40
[игнорируется]
Неуловимый Джо  21.04.2023, 00:00
[игнорируется]
...
Я тебе больше скажу. Любой единичный запрос выполняется в отдельной неявной транзакции
В том числе и внутри хранимки.
Ладно не важно, не хочешь признавать ошибку )
Какую?
Вилять начинаешь чтоли?

Ты писал.
"В самой хп никаких транзакций открывать не надо, так как по умолчанию хп выполняется в контексте одной транзакции"

Это ошибка.
Это так и есть
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #365662
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гесты и игнорируемые идут по CSS
Неуловимый Джо  21.04.2023, 17:56
[игнорируется]
cat2  21.04.2023, 17:52
[игнорируется]
Неуловимый Джо  21.04.2023, 17:50
[игнорируется]
ну там на самом деле не каждый оператор конечно, есть список этих самых операторов.
Согласен. Select транзакций не порождает
Порождает.

ALTER TABLE

FETCH

REVOKE

BEGIN TRANSACTION

GRANT

SELECT (See exception below.)

CREATE

INSERT

TRUNCATE TABLE

DELETE

MERGE

UPDATE

DROP

OPEN

----------------
SELECT statements that do not select from a table do not start implicit transactions. For example SELECT GETDATE(); or SELECT 1, 'ABC'; do not require transactions.
Ссылочку дай, где это написано.
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #365669
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гесты и игнорируемые идут по CSS
cat2  21.04.2023, 19:03
[игнорируется]
Ссылочку дай, где это написано.
Не надо, понял. Это про то, если установлен экзотический режим - SET IMPLICIT_TRANSACTIONS ON.
По умолчание он выключен
...
Рейтинг: 0 / 0
Транзакции в 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
Нравится: Гарыныч
Транзакции в MS SQL Server
    #365707
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
s62 [игнорируется] 

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

Ну и стандартные советы, постарайся делать транзакции короткими, не надо всю процедуру оборачивать.
...
Изменено: 21.04.2023, 19:29 - Неуловимый Джо
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #365711
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гесты и игнорируемые идут по CSS
Неуловимый Джо  21.04.2023, 19:27
[игнорируется]
Операторы в процедуре НЕ выполняются в одной транзакции, проверяется элементарным экспериментом.
Ну, давай эксперимент
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #365715
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
cat2  21.04.2023, 19:30
[игнорируется]
Неуловимый Джо  21.04.2023, 19:27
[игнорируется]
Операторы в процедуре НЕ выполняются в одной транзакции, проверяется элементарным экспериментом.
Ну, давай эксперимент
Надоело.
Ты не приведешь ссылку, подтверждающую, что операторы в процедуре выполняются в одной транзакции?
...
Рейтинг: 0 / 0
Транзакции в 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
Нравится: Ифрит
Транзакции в 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
Транзакции в MS SQL Server
    #365729
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гесты и игнорируемые идут по CSS
Неуловимый Джо  21.04.2023, 20:03
[игнорируется]
Это не откат транзакции, это просто результат первого селекта.
Я тоже это понял. Хреновый пример привел
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #365730
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
cat2  21.04.2023, 20:07
[игнорируется]
Неуловимый Джо  21.04.2023, 20:03
[игнорируется]
Это не откат транзакции, это просто результат первого селекта.
Я тоже это понял. Хреновый пример привел
почему хреновый.
как раз хороший пример.
Первый апдейт выполнился.

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

И ОСТАЛСЯ :)
Не было события, которое бы прервало транзакцию
...
Рейтинг: 0 / 0
Транзакции в 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
Транзакции в MS SQL Server
    #365735
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
А какое событие прервет?
1/0 прервет?
Нарушение primary key ?
Что-то же должно прервать?
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #365736
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
cat2 [игнорируется] 

ты ссылку-то приведешь или нет?
...
Рейтинг: 0 / 0
Транзакции в MS SQL Server
    #365737
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гесты и игнорируемые идут по CSS
Если написать
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
BEGIN
begin tran
  update t SET t = 1
  update t SET t = 'A' --это откатит транзакцию
  update t SET t = 2
commit

END
То отката тоже нет
...
Рейтинг: 0 / 0
25 сообщений из 182, страница 6 из 8
Форумы / Microsoft SQL Server [закрыт для гостей] / Транзакции в MS SQL Server
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (3): Анонимы (2), Bing Bot 1 мин.
Читали форум (2): Анонимы (1), Bing Bot 1 мин.
Пользователи онлайн (39): Анонимы (27), Капитан Немо, NSFuimus, Yandex Bot, Bing Bot, Буся 1 мин., Шоколадный01 1 мин., bk0010 2 мин., Просто Трёп 2 мин., Брюквенные годы 3 мин., Сталкер 5 мин., Ветер 6 мин., XEugene 9 мин.
x
x
Закрыть


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