Гость
Map
Форумы / Microsoft SQL Server [закрыт для гостей] / Транзакции в MS SQL Server / 25 сообщений из 182, страница 6 из 8
21.04.2023, 17:31
    #365568
cat2
cat2 
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гесты и игнорируемые идут по CSS
Транзакции в MS SQL Server
Неуловимый Джо  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
21.04.2023, 17:33
    #365570
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции в MS SQL Server
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
21.04.2023, 17:40
    #365577
cat2
cat2 
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гесты и игнорируемые идут по CSS
Транзакции в MS SQL Server
Неуловимый Джо  21.04.2023, 00:00
[игнорируется]
В хранимках каждый оператор в отдельной неявной транзакции.
Я тебе больше скажу. Любой единичный запрос выполняется в отдельной неявной транзакции
...
Рейтинг: 0 / 0
21.04.2023, 17:45
    #365584
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции в MS SQL Server
cat2  21.04.2023, 17:40
[игнорируется]
Неуловимый Джо  21.04.2023, 00:00
[игнорируется]
В хранимках каждый оператор в отдельной неявной транзакции.
Я тебе больше скажу. Любой единичный запрос выполняется в отдельной неявной транзакции
В том числе и внутри хранимки.
Ладно не важно, не хочешь признавать ошибку )
...
Рейтинг: 0 / 0
21.04.2023, 17:50
    #365587
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции в MS SQL Server
ну там на самом деле не каждый оператор конечно, есть список этих самых операторов.
...
Рейтинг: 0 / 0
21.04.2023, 17:51
    #365589
cat2
cat2 
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гесты и игнорируемые идут по CSS
Транзакции в MS SQL Server
Неуловимый Джо  21.04.2023, 17:45
[игнорируется]
cat2  21.04.2023, 17:40
[игнорируется]
Неуловимый Джо  21.04.2023, 00:00
[игнорируется]
В хранимках каждый оператор в отдельной неявной транзакции.
Я тебе больше скажу. Любой единичный запрос выполняется в отдельной неявной транзакции
В том числе и внутри хранимки.
Ладно не важно, не хочешь признавать ошибку )
Какую?
...
Рейтинг: 0 / 0
21.04.2023, 17:52
    #365590
cat2
cat2 
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гесты и игнорируемые идут по CSS
Транзакции в MS SQL Server
Неуловимый Джо  21.04.2023, 17:50
[игнорируется]
ну там на самом деле не каждый оператор конечно, есть список этих самых операторов.
Согласен. Select транзакций не порождает
...
Рейтинг: 0 / 0
21.04.2023, 17:54
    #365592
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции в MS SQL Server
cat2  21.04.2023, 17:51
[игнорируется]
Неуловимый Джо  21.04.2023, 17:45
[игнорируется]
cat2  21.04.2023, 17:40
[игнорируется]
Неуловимый Джо  21.04.2023, 00:00
[игнорируется]
В хранимках каждый оператор в отдельной неявной транзакции.
Я тебе больше скажу. Любой единичный запрос выполняется в отдельной неявной транзакции
В том числе и внутри хранимки.
Ладно не важно, не хочешь признавать ошибку )
Какую?
Вилять начинаешь чтоли?

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

Это ошибка.
...
Рейтинг: 0 / 0
21.04.2023, 17:56
    #365594
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции в MS SQL Server
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
Нравится: Гарыныч
21.04.2023, 18:59
    #365657
cat2
cat2 
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гесты и игнорируемые идут по CSS
Транзакции в MS SQL Server
Неуловимый Джо  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
21.04.2023, 19:03
    #365662
cat2
cat2 
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гесты и игнорируемые идут по CSS
Транзакции в MS SQL Server
Неуловимый Джо  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
21.04.2023, 19:06
    #365669
cat2
cat2 
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гесты и игнорируемые идут по CSS
Транзакции в MS SQL Server
cat2  21.04.2023, 19:03
[игнорируется]
Ссылочку дай, где это написано.
Не надо, понял. Это про то, если установлен экзотический режим - SET IMPLICIT_TRANSACTIONS ON.
По умолчание он выключен
...
Рейтинг: 0 / 0
21.04.2023, 19:14
    #365681
s62
s62
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции в MS SQL Server
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
Нравится: Гарыныч
21.04.2023, 19:27
    #365707
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции в MS SQL Server
s62 [игнорируется] 

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

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

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

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

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

ладно, теперь точно все :)
...
Рейтинг: 0 / 0
21.04.2023, 20:13
    #365735
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции в MS SQL Server
А какое событие прервет?
1/0 прервет?
Нарушение primary key ?
Что-то же должно прервать?
...
Рейтинг: 0 / 0
21.04.2023, 20:13
    #365736
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции в MS SQL Server
cat2 [игнорируется] 

ты ссылку-то приведешь или нет?
...
Рейтинг: 0 / 0
21.04.2023, 20:14
    #365737
cat2
cat2 
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гесты и игнорируемые идут по CSS
Транзакции в MS SQL Server
Если написать
Код: 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
Форумы / Microsoft SQL Server [закрыт для гостей] / Транзакции в MS SQL Server / 25 сообщений из 182, страница 6 из 8
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (3): Анонимы (3)
Пользователи онлайн (123): жЫвоглот, Анонимы (112), Antonariy, S Baltiki, Yandex Bot, Bing Bot 1 мин., паразит 1 мин., С чистого листа 1 мин., Дед-Папыхтет 2 мин., Брюквенные годы 3 мин., cat2 8 мин., sergey11 9 мин.
x
x
Закрыть


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