Разрыв соединения с SQL Server в середине выполнения - PullRequest
0 голосов
/ 04 мая 2018

Если я выполняю сценарий для SQL, в котором есть несколько транзакций, но на полпути разрывается соединение, что делает SQL? Запускает ли скрипт сценарий до завершения или просто откатывает транзакцию, в которой он находился (или завершает ее)?

Ответы [ 3 ]

0 голосов
/ 04 мая 2018

Будут выполняться только совершенные транзакции.

Другие сделают откат.

0 голосов
/ 04 мая 2018

Ну, зависит, если в скрипте SQL есть несколько транзакций, вы помещаете коммит в каждую транзакцию? например, если ваш скрипт такой:

BEGIN TRAN --Transaction 1
    INSERT TableA VALUES(value1,value2)
COMMIT TRAN

BEGIN TRAN --Transaction 2
    INSERT TableB VALUES(value1,value2)
COMMIT TRAN

если ваш sql-сервер отключен на полпути выполнения всего сценария, но пока на пути выполнения сценария и sql-сервер завершил транзакцию 1, и это зафиксировано, тогда транзакция 1 завершена, и Вы можете увидеть результат в таблице A, но когда сервер sql, выполняющий транзакцию 2 сразу же, а через несколько мгновений транзакция 2 еще не завершена и соединение разрывается, транзакция 2 будет откатываться, поэтому вы не сможете увидеть результат в таблице B

0 голосов
/ 04 мая 2018

Когда SQL Server обнаруживает разрыв соединения, он должен откатить любую текущую транзакцию и прервать текущий пакет 1 .

Все предыдущие совершенные транзакции будут по-прежнему совершаться.


1 Здесь я пытаюсь провести различие между сценариями и пакетами . Многие клиентские инструменты поддерживают сценарии, содержащие несколько пакетов (разделенных GO s) и те пакеты, которые передаются в SQL Server последовательно.

...