Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Исчезновение данных в таблицах баз данных  [new]
o-o
Guest
Mind
Есть ошибки, например Msg 208 - Invalid object name, которые прерывают выполнение процедуры, но при этом не откатывают транзакцию. Ну и все - приехали. Избежать этого только один по сути вариант, либо после каждого запроса к серверу, либо на событие возникновения ошибки, проверять на клиенте если остались незакрытые транзакции то делать rollback.

во все процедуры первым же стэйтментом вписать
set xact_abort on;
29 дек 16, 23:44    [20062397]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
o-o
Mind
Есть ошибки, например Msg 208 - Invalid object name, которые прерывают выполнение процедуры, но при этом не откатывают транзакцию. Ну и все - приехали. Избежать этого только один по сути вариант, либо после каждого запроса к серверу, либо на событие возникновения ошибки, проверять на клиенте если остались незакрытые транзакции то делать rollback.

во все процедуры первым же стэйтментом вписать
set xact_abort on;
Точно! Совсем забыл, так ведь тоже можно.
30 дек 16, 00:03    [20062444]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
o-o
Mind
Есть ошибки, например Msg 208 - Invalid object name, которые прерывают выполнение процедуры, но при этом не откатывают транзакцию. Ну и все - приехали. Избежать этого только один по сути вариант, либо после каждого запроса к серверу, либо на событие возникновения ошибки, проверять на клиенте если остались незакрытые транзакции то делать rollback.

во все процедуры первым же стэйтментом вписать
set xact_abort on;
А если нет процедур, куда вписывать?

Мы делали просто: перед любым вызовом с клиента в коннект кидали if @@trancount > 0 rollback. Если вдруг кто-то использует управление транзакциями с клиента... Ну, там тоже, наверное, есть понимание, когда не может начинаться внутренняя транзакция, только внешняя.

Сообщение было отредактировано: 30 дек 16, 00:54
30 дек 16, 00:51    [20062529]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
Гавриленко Сергей Алексеевич
o-o
пропущено...

во все процедуры первым же стэйтментом вписать
set xact_abort on;
А если нет процедур, куда вписывать?

Мы делали просто: перед любым вызовом с клиента в коннект кидали if @@trancount > 0 rollback. Если вдруг кто-то использует управление транзакциями с клиента... Ну, там тоже, наверное, есть понимание, когда не может начинаться внутренняя транзакция, только внешняя.
читал длинный топик и вот именно это тоже хотел посоветовать - анализировать trancount надо
нарывался однажды на подобные грабли. правда там локи массовые возникали
потом процессы грохали и документы пропадали
а было это после неаккуратных модификаций работы с открытием и закрытием транзакций
у вас вероятно тоже где-то есть зазоры в логике
в которые проскочило лишнее открытие транзакции
после коммита документа и перед его печатью надо проверить чтобы trancount был равен 0
если не так то надо в первую очередь тревогу включать чтобы искали почему оно так вышло
ну а если просто заткнуть дырку хочется то или rollback (тогда надо проверять остался тот документ в базе)
или повторять commit пока trancount не обнулится
30 дек 16, 02:24    [20062644]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Mind,

автор
повисшая незакомиченная транзакция.


Да, иных нет объяснений. Тем не менее, если приложение может в одной транзакции внести несколько документов - это странно.
Автор темнит, либо не знает механизмов работы клиента.
30 дек 16, 10:47    [20063160]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
Valerii
Member

Откуда:
Сообщений: 749
Гавриленко Сергей Алексеевич
o-o
пропущено...

во все процедуры первым же стэйтментом вписать
set xact_abort on;
А если нет процедур, куда вписывать?

Мы делали просто: перед любым вызовом с клиента в коннект кидали if @@trancount > 0 rollback. Если вдруг кто-то использует управление транзакциями с клиента... Ну, там тоже, наверное, есть понимание, когда не может начинаться внутренняя транзакция, только внешняя.


Любая транзакция заканчивается или COMMIT или ROLLBACK!
30 дек 16, 14:08    [20064111]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
Valerii
Member

Откуда:
Сообщений: 749
Владислав Колосов
Mind,

автор
повисшая незакомиченная транзакция.


Да, иных нет объяснений. Тем не менее, если приложение может в одной транзакции внести несколько документов - это странно.
Автор темнит, либо не знает механизмов работы клиента.


Ничего я не темню. Клиент написан мной. Процедуры в базе тоже мои. У многих орг такой проблемы нет и не было никогда. Вот одна выстрелила с такой проблемой.
Целостность транзакций обеспечиваю begin tran и заканчиваю обязательно если успешно COMMIT или Rollback в случае ошибки...
Дело в том что сущность клиента - это набивка и периодически редактирование документа в течении суток. При редактировании он через запрос считывается и к его содержимому могут только дописываться данные отдельными записями. Это ни в коем случае не UPDATE!!! Такова идеология. И это может происходить по несколько раз в течении 1-2 часов. Если бы документ не сохранился - ситуация бы всплыла моментально и была бы замечена - примерно от 1 мин до 15 мин.
Но в полночь 01:00:00 делается полный бэкап в режиме FULL Recovery Mode!!!! Журнал транзакций не делался, так как подобных ситуаций никогда не было ну и как-то посчитал что этого будет достаточно.
В 2 часа ночи обнаружилось что все док начиная с 20:22 исчезли... Вопрос - куда они могли деться если из видели и в 21 и в 22 и в 23 часа...????
Клиент ошибками не ругался, хотя тут я не уверен (это информ. от сотрудников). Поэтому от простого предупреждения об ошибке придется переписать клиента на закрытие приложения.
Другого пока ничего в голову не приходит.
Ну разве что запустить каждые 15 мин бэкап журнала транзакций.
Ну и добавить стейтмент в процедуры вставки и изменения данных , то что кто-то посоветовал раньше ...
Тем не менее спасибо всем за советы и рекомендации, хотя нормального ответа я так и не дождался, или наезды или просто ни о чем...
30 дек 16, 14:26    [20064170]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Valerii
Целостность транзакций обеспечиваю begin tran и заканчиваю обязательно если успешно COMMIT или Rollback в случае ошибки...
При любом клиентском таймауте при выполнении стейтмента до commit или rollback не произойдет ни того, ни другого, если нет xact_abort.
Valerii
Тем не менее спасибо всем за советы и рекомендации, хотя нормального ответа я так и не дождался, или наезды или просто ни о чем...
Какие нормальные ответы вы хотите ответы на ваши сказки про белого бычка? Кода, нет, репро нет, только "аааа, данные пропалили!!11, скажыте мне, где ошибка?"

Сообщение было отредактировано: 30 дек 16, 14:57
30 дек 16, 14:57    [20064305]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Valerii,

Вы не сообщили, например, как производите обработку ошибки на клиенте.
Если возникает системная ошибка, оператор видит ее на экране?
30 дек 16, 15:05    [20064353]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
Valerii
Ничего я не темню. Клиент написан мной. Процедуры в базе тоже мои. У многих орг такой проблемы нет и не было никогда. Вот одна выстрелила с такой проблемой.
Целостность транзакций обеспечиваю begin tran и заканчиваю обязательно если успешно COMMIT или Rollback в случае ошибки...
Да, это конечно 100% гарантия, что не может быть begin tran без commit/rollback.
Valerii
Если бы документ не сохранился - ситуация бы всплыла моментально и была бы замечена - примерно от 1 мин до 15 мин.
Сессия, где есть незавершенная транзакция, будет видеть все свои документы и считать, что все "сохранилось". Ровно до того момента, пока она не завершится и все "сохраненное" не исчезнет.
Valerii
Но в полночь 01:00:00 делается полный бэкап в режиме FULL Recovery Mode!!!!
И что? Для вас full recovery - некая волшебная фиговина, гарантирующая, что "все будет хорошо" само-собой?
Valerii
В 2 часа ночи обнаружилось что все док начиная с 20:22 исчезли... Вопрос - куда они могли деться если из видели и в 21 и в 22 и в 23 часа...????
Вам уже говорили - либо незавершенная транзакция, либо данные удалили, либо БД восстановили из резервной копии, в которой этих данных не было.
Чудес, типа "процедура как-то странно залипает", не бывает.
30 дек 16, 15:12    [20064394]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
Valerii
Member

Откуда:
Сообщений: 749
Владислав Колосов
Valerii,

Вы не сообщили, например, как производите обработку ошибки на клиенте.
Если возникает системная ошибка, оператор видит ее на экране?


Да, пользователь видит все ошибки возникающие при обмене данными с сервера!
Более того, при критических ошибках я показываю ошибку и закрываю приложение. Но пользователь иногда может проигнорироать собщения.
В других системах я пишу в лог сервера все ошибки. В этой к сожалению поленился ...
30 дек 16, 23:17    [20065603]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
Valerii
Member

Откуда:
Сообщений: 749
invm
Valerii
Ничего я не темню. Клиент написан мной. Процедуры в базе тоже мои. У многих орг такой проблемы нет и не было никогда. Вот одна выстрелила с такой проблемой.
Целостность транзакций обеспечиваю begin tran и заканчиваю обязательно если успешно COMMIT или Rollback в случае ошибки...
Да, это конечно 100% гарантия, что не может быть begin tran без commit/rollback.
Valerii
Если бы документ не сохранился - ситуация бы всплыла моментально и была бы замечена - примерно от 1 мин до 15 мин.
Сессия, где есть незавершенная транзакция, будет видеть все свои документы и считать, что все "сохранилось". Ровно до того момента, пока она не завершится и все "сохраненное" не исчезнет.
Valerii
Но в полночь 01:00:00 делается полный бэкап в режиме FULL Recovery Mode!!!!
И что? Для вас full recovery - некая волшебная фиговина, гарантирующая, что "все будет хорошо" само-собой?
Valerii
В 2 часа ночи обнаружилось что все док начиная с 20:22 исчезли... Вопрос - куда они могли деться если из видели и в 21 и в 22 и в 23 часа...????
Вам уже говорили - либо незавершенная транзакция, либо данные удалили, либо БД восстановили из резервной копии, в которой этих данных не было.
Чудес, типа "процедура как-то странно залипает", не бывает.


Продолжаю рыться и вот нашел в логе сервера
The log file for database 'tempdb' is full. Back up the transaction log for the database to free up some log space..

Как это коррктно перебороть?
Спасибо .
30 дек 16, 23:20    [20065612]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
Valerii
Member

Откуда:
Сообщений: 749
Valerii
invm
пропущено...
Да, это конечно 100% гарантия, что не может быть begin tran без commit/rollback.
пропущено...
Сессия, где есть незавершенная транзакция, будет видеть все свои документы и считать, что все "сохранилось". Ровно до того момента, пока она не завершится и все "сохраненное" не исчезнет.пропущено...
И что? Для вас full recovery - некая волшебная фиговина, гарантирующая, что "все будет хорошо" само-собой?пропущено...
Вам уже говорили - либо незавершенная транзакция, либо данные удалили, либо БД восстановили из резервной копии, в которой этих данных не было.
Чудес, типа "процедура как-то странно залипает", не бывает.


Продолжаю рыться и вот нашел в логе сервера
The log file for database 'tempdb' is full. Back up the transaction log for the database to free up some log space..

Как это коррктно перебороть?
Спасибо .


CHECKDB found 0 allocation errors and 0 consistency errors in database 'XXXXXXXXXX'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
31 дек 16, 00:16    [20065731]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Valerii,

Во-во, правильно пишет, "contact your system administrator" наконец. Или наймите, если сами не в состоянии разобраться в ваших чудесах.
31 дек 16, 00:22    [20065747]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31439
Valerii
The log file for database 'tempdb' is full. Back up the transaction log for the database to free up some log space..
Места под лог файл меньше, чем требуется серверу.
Либо пространства слишком мало, либо что то вроде кривого запроса (например, ошибочный кросс джойн)
Побороть можно либо расширением дискового пространства, либо снижением потребности в нём.
Valerii
Режим восстановления базы FULL...

Valerii
Ну разве что запустить каждые 15 мин бэкап журнала транзакций.
Зачем???

Как то вы странно представляете работу SQL Server. Наверное, вы думаете, что, что бы восстановить состояние базы на определённый момент времени, нужно иметь бакап на этот момент времени ? :-)
Valerii
В 2 часа ночи обнаружилось что все док начиная с 20:22 исчезли... Вопрос - куда они могли деться если из видели и в 21 и в 22 и в 23 часа...????
Ну, отлаживайте ваше приложение, что тут можно сказать???
Пишите логи посылаемых запросов, что ли, или пишите постоянно трейс на сервере...
31 дек 16, 13:17    [20066343]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
автор
The log file for database 'tempdb' is full.


Значит пользователь не видел эту ошибку или не сообщил об этой ошибке и продолжил попытки внесения данных.
Поэтому системные ошибки приложения лучше автоматически сохранять, а не полагаться на субъективное мнение пользователя.

Переполнение журнала tempdb говорит о неправильно сконструированных запросах или о недостаточном размере файлов tempdb для рабочих процессов.
1 янв 17, 15:35    [20067928]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
Valerii
Member

Откуда:
Сообщений: 749
Гавриленко Сергей Алексеевич,

CHECKDB found 0 allocation errors and 0 consistency errors in database 'XXXXXXXXXX'.
2 янв 17, 09:46    [20068894]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
Valerii
Member

Откуда:
Сообщений: 749
Гавриленко Сергей Алексеевич,

CHECKDB found 0 allocation errors and 0 consistency errors in database 'XXXXXXXXXX'.
2 янв 17, 10:07    [20068905]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
o-o
Guest
что вы пристали к записи о чекдб?
каждый раз при открытии базы сервер пишет в еррорлог,
когда же последний раз чекдб базы прошел без ошибок.
строкой выше в еррорлоге будет запись вида Starting up database 'XXXXXXXXXX'.
еще выше запись о том, в честь чего база вышла в онлайн
(например, рестарт сервера.
или рестор базы.
или в явном виде сделали alter database XXXXXXXXXX set online , т.к. до этого база в оффлайне была)
2 янв 17, 11:27    [20068944]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
o-o
Guest
Владислав Колосов
Переполнение журнала tempdb говорит о неправильно сконструированных запросах или о недостаточном размере файлов tempdb для рабочих процессов.

или с файлами темпдб все ок, безлимитный рост.
просто место на диске закончилось, и темпдб на одном диске с юзерскими базами.
т.к. некоторые выставляют базам полную модель, а потом не делают бэкапы логов,
потому что у них своеобразное представление о логе, его назначении, и полной модели.
о чем нам автор топика уже поведал во всех красках:
автор
Но в полночь 01:00:00 делается полный бэкап в режиме FULL Recovery Mode!!!!
Журнал транзакций не делался, так как подобных ситуаций никогда не было ну и как-то посчитал что этого будет достаточно.
2 янв 17, 11:33    [20068947]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
o-o
Guest
Valerii
Целостность транзакций обеспечиваю begin tran и заканчиваю обязательно если успешно COMMIT или Rollback в случае ошибки...
Дело в том что сущность клиента - это набивка и периодически редактирование документа в течении суток.
...
Если бы документ не сохранился - ситуация бы всплыла моментально и была бы замечена - примерно от 1 мин до 15 мин.
...
Клиент ошибками не ругался, хотя тут я не уверен (это информ. от сотрудников).
...

только в честь нового года перевожу вам на русский ответы, данные выше:
ваша работа ведется в явных транзакциях,
у вас всегда есть begin tran..commit.
вы уверены, что если вы написали commit,
то он обязательно выполнится, и это совсем не так.
вы не юзаете xact_abort on,
а по умолчанию выставлено off.
любая batch aborting-ошибка завершает вашу процедуру ДО выполнения коммита.
в результате остается открытая незавершенная транзакция.
пользователи продолжают работать, но ваши дальнейшие коммиты не коммитят ничего,
они лишь меняют счетчик транзакций.
при закрытии приложения либо при ошибке, вызывающей роллбэк
(пример такой ошибки -- переполнение темпдб, которая была, но ваши юзеры "не заметили")
откатится абсолютно все, что было наработано ранее.

ибо при подвисшей транзакции никакой последующий коммит ничего не коммитит,
а вот зато любой роллбэк откатывает все.

вы это не знаете, не понимает, и отказываетесь это принять.
донести вам это невозможно,
удивительно, что Гавриленко все еще топик не закрыл,
ибо сколько же можно долбить одно и то же?
----
вот вам пример для воспроизведения,
запустите в студии и убедитесь.
и хватит уже вываливать сюда все то, что не имеет никакого отношения к вашей проблеме,
займитесь лучше осознанием того, что вам тут написали

begin tran
   select * from dbo.nonexixtingtable
commit
-- batch aborting error without rollback;

select @@trancount; -- 1 transaction is still alive
 
begin tran
	select top 10 *
	into dbo.new_table
	from sys.tables; -- create a new table
commit; -- it seems we've committed

select @@trancount; -- 1 transaction is still alive!!!


select *
from dbo.new_table; -- work with that table

-- create another 10000 tables!!! with begin tran..commit

select sqrt(-1); -- batch aborting error with rollback; imitation of tempdb is full/exit from application

select *
from dbo.new_table; -- nomore dbo.new_table
2 янв 17, 12:15    [20068972]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
Valerii
Member

Откуда:
Сообщений: 749
o-o
Valerii
Целостность транзакций обеспечиваю begin tran и заканчиваю обязательно если успешно COMMIT или Rollback в случае ошибки...
Дело в том что сущность клиента - это набивка и периодически редактирование документа в течении суток.
...
Если бы документ не сохранился - ситуация бы всплыла моментально и была бы замечена - примерно от 1 мин до 15 мин.
...
Клиент ошибками не ругался, хотя тут я не уверен (это информ. от сотрудников).
...

только в честь нового года перевожу вам на русский ответы, данные выше:
ваша работа ведется в явных транзакциях,
у вас всегда есть begin tran..commit.
вы уверены, что если вы написали commit,
то он обязательно выполнится, и это совсем не так.
вы не юзаете xact_abort on,
а по умолчанию выставлено off.
любая batch aborting-ошибка завершает вашу процедуру ДО выполнения коммита.
в результате остается открытая незавершенная транзакция.
пользователи продолжают работать, но ваши дальнейшие коммиты не коммитят ничего,
они лишь меняют счетчик транзакций.
при закрытии приложения либо при ошибке, вызывающей роллбэк
(пример такой ошибки -- переполнение темпдб, которая была, но ваши юзеры "не заметили")
откатится абсолютно все, что было наработано ранее.

ибо при подвисшей транзакции никакой последующий коммит ничего не коммитит,
а вот зато любой роллбэк откатывает все.

вы это не знаете, не понимает, и отказываетесь это принять.
донести вам это невозможно,
удивительно, что Гавриленко все еще топик не закрыл,
ибо сколько же можно долбить одно и то же?
----
вот вам пример для воспроизведения,
запустите в студии и убедитесь.
и хватит уже вываливать сюда все то, что не имеет никакого отношения к вашей проблеме,
займитесь лучше осознанием того, что вам тут написали

begin tran
   select * from dbo.nonexixtingtable
commit
-- batch aborting error without rollback;

select @@trancount; -- 1 transaction is still alive
 
begin tran
	select top 10 *
	into dbo.new_table
	from sys.tables; -- create a new table
commit; -- it seems we've committed

select @@trancount; -- 1 transaction is still alive!!!


select *
from dbo.new_table; -- work with that table

-- create another 10000 tables!!! with begin tran..commit

select sqrt(-1); -- batch aborting error with rollback; imitation of tempdb is full/exit from application

select *
from dbo.new_table; -- nomore dbo.new_table


Спасибо, полезная инфа в одном флаконе и если четно приоткрыли глаза на вещи о которых не догадывался ....
2 янв 17, 15:42    [20069203]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
Valerii
Member

Откуда:
Сообщений: 749
o-o,
Спс еще раз,
Теперь тогда вопрос:
Можно ли считать за панацею SET XACT_ABORT ON при явных транзакциях в случае ошибки изменения/вставки данных?
И второй вопрос: ROLLBACK в этом случае можно использовать как проверку IF @@trancount > 0 ROLLBACK чтобы принудительно
откатить незавершенные транзакции?
Спс еще раз.
2 янв 17, 16:10    [20069238]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Valerii
o-o,
Спс еще раз,
Теперь тогда вопрос:
Можно ли считать за панацею SET XACT_ABORT ON при явных транзакциях в случае ошибки изменения/вставки данных?
И второй вопрос: ROLLBACK в этом случае можно использовать как проверку IF @@trancount > 0 ROLLBACK чтобы принудительно
откатить незавершенные транзакции?
Спс еще раз.
Расшарю вам сакральное знание, которое висит на форуме уже 12 лет: 598914

Сообщение было отредактировано: 2 янв 17, 16:35
2 янв 17, 16:34    [20069270]     Ответить | Цитировать Сообщить модератору
 Re: Исчезновение данных в таблицах баз данных  [new]
aleks2
Guest
Valerii
o-o,
Спс еще раз,
Теперь тогда вопрос:
Можно ли считать за панацею SET XACT_ABORT ON при явных транзакциях в случае ошибки изменения/вставки данных?
И второй вопрос: ROLLBACK в этом случае можно использовать как проверку IF @@trancount > 0 ROLLBACK чтобы принудительно
откатить незавершенные транзакции?
Спс еще раз.


1. Гарантию дает только страховой полис.
2. SET XACT_ABORT ON гарантирует (согласно документации), что при любой ошибке текущий batch будет прерван и ВСЕ активные транзакции откатятся. Управление будет передано в вызывающий batch ( кроме ошибок, вызывающий разрыв коннекта ).
3. Это далеко не всегда приемлемо.
4. Ваша дело перед началом транзакции проверить, что не существует объемлющих транзакций. Если так должно быть по логике вашего приложения.
2 янв 17, 16:37    [20069275]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить