|
|
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
Привет всем! Очень нужен совет. Как обойти - такую проблему, може кто подскажет? Постоянные таблицы с id сессии - мне не подойдут... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2008, 16:46 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
А зачем у тебя там begin tran стоит? Убери скорее пока никто больше не увидел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2008, 17:10 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
Ответ неверный, убирать не буду... Верный ответ таков... создавать темповые таблицы до процедуры и дропать после отработки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2008, 17:14 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
boogimanОтвет неверный, убирать не буду... Верный ответ таков... создавать темповые таблицы до процедуры и дропать после отработки...Глупости какие. Временные таблицы прекрасно создаются внутри хранимок и убиваются автоматически по окончанию хранимки. А вот управлять транзакциями внутри ХП это напрашиваться на геморрой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2008, 17:24 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
boogimanОтвет неверный, убирать не буду... Верный ответ таков... создавать темповые таблицы до процедуры и дропать после отработки... Нет, всё равно неверный ответ. Надо создавать временные таблицы ДО НАЧАЛА ТРАНЗАКЦИИ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2008, 17:46 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
Да, и не дропать - сами дропаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2008, 17:47 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
White Owl wrote: > Временные таблицы прекрасно создаются внутри хранимок и убиваются > автоматически по окончанию хранимки. А вот управлять транзакциями внутри > ХП это напрашиваться на геморрой. "Это в тебе кричит твой "... anywhere-вский ... "вакуум !". Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2008, 17:48 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
Если по провилу, то надо создать две процедуры, одна создает "времянку", вторая рабоает с ней. Из той что "создает" вызывается та которая "рботает". А оборачивать создание в транзакцию нестоит. ИМХО P.S. А СУБД какая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2008, 17:50 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
MasterZiv"Это в тебе кричит твой "... anywhere-вский ... "вакуум !".Чего-чего? Какой вакуум? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2008, 18:11 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
MasterZiv прав! Я придумал, что во внешней процедуре, я создаю времянки выполняю внутреннюю процедуру, которая юзает эти таблицы. А потом опять же времянки во внешней и дропаю. begin tran commit tran , делаю во внутренней процедуре. drop - ать надо, это как бы в хороших правилах программирования, что сам создал, то сам и должен убить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2008, 18:39 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
НЕЛЬЗЯ создавать транзакции внутри хранимой процедуры. И вдвойне нельзя их коммитить внутри хранимой процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2008, 19:46 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
White OwlНЕЛЬЗЯ создавать транзакции внутри хранимой процедуры. И вдвойне нельзя их коммитить внутри хранимой процедуры. Почему НЕЛЬЗЯ? Можно ссылку! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2008, 20:05 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
Это вам кто такое сказал? Скажем так ... Допустим я создаю проводку двойным инсертом. Одна таблица заголовок (дебет , кредит, id), вторая всё остальное назначение платежа аналитику ,код подразделение и т.д. Предположим что делаем проводку внутри 1- ой процедуры... Например не используя транзакцию, можно налететь на ситуацию, когда произошёл обрыв связи по сети с сервером или юзер случайно нажал отмену. Первый инсерт прошёл, второй нет... Получается уже мусорка в базе... В случае одно й транзакции... Можно проверять перед второй вставкой на ошибку и при присутствии таковой. Целиком откатывать транзакцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2008, 20:09 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
Вот именно. А как ты собираешься это все проделать если у тебя транзакция и открылась и закрылась внутри ХП? Как ты сможешь теперь с клиента послать rollback? Что он будет откатывать? Изменения сделанные после того как ХП отработала? Клиент и только клиент может и должен посылать begin tran и commit/rollback. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2008, 20:53 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
boogiman wrote: > MasterZiv прав! Я придумал, что во внешней процедуре, я создаю времянки > выполняю внутреннюю процедуру, которая юзает эти таблицы. А потом опять > же времянки во внешней и дропаю. begin tran commit tran , делаю во > внутренней процедуре. drop - ать надо, это как бы в хороших правилах > программирования, что сам создал, то сам и должен убить :) Дропать не надо , дропаются они сами. Создавать можно и в этой же процедуре, главное - не в транзакции. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2008, 21:02 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
White Owl wrote: > НЕЛЬЗЯ создавать транзакции внутри хранимой процедуры. И вдвойне нельзя > их коммитить внутри хранимой процедуры. Это - спорный вопрос. Если хочешь, открывай новый топик и спорь. К данному топику он отношения не имеет. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2008, 21:03 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
White Owl wrote: > Вот именно. А как ты собираешься это все проделать если у тебя > транзакция и открылась и закрылась внутри ХП? Как ты сможешь теперь с > клиента послать rollback? Ч А не надо с клиента посылать ни ROLLBACK, ни COMMIT. Я вот не понимаю, зачем ветку не туда уводишь ? Тебя же не спрашивали, можно или нет рулить транзакциями в процедурах. Можно это делать ? Можно. Можно НЕ делать ? Тоже можно. Что тут обсуждать ? Нас же спрашивали, как временные таблицы создавать. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2008, 21:07 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
MasterZivНас же спрашивали, как временные таблицы создавать.Ну я и ответил "убери begin tran". Ты ж не будешь спорить с тем что самый простой способ починить показанную процедуру - убрать из нее работу с транзакциями? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2008, 22:00 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
White Owl wrote: > Ну я и ответил "убери begin tran". Ты ж не будешь спорить с тем что > самый простой способ починить показанную процедуру - убрать из нее > работу с транзакциями? Но это изменение не будет функционально эквивалентным. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2008, 23:43 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
MasterZivНо это изменение не будет функционально эквивалентным.Конечно не будет. Раньше не работало, теперь будет работать. Какая уж тут эквивалентность! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2008, 00:15 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
На самом деле можно и временную таблицу внутри транзакции создать. Для этого нужно в свойствах tempDb один флажок выставить (не помню какой). Можно даже именно для вашей базы отдельную tempDb создать (начиная с 12.5.4 кажется можно несколько tempdb иметь) в в ней это флажок выставить. Тогда создание объектов будет разрешено только в транзакциях выполняемых из Вашей БД. Второй вопрос - насколько Вам действительно нужно создавать временную таблицу в транзакции. Цена вопроса - не только сложность решения, но и возможное снижение производительности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2008, 01:09 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
Kru wrote: > На самом деле можно и временную таблицу внутри транзакции создать. Для > этого нужно в свойствах tempDb один флажок выставить (не помню какой). Конечно, можно ! Весь сервак застопорить до конца этой твоей транзакции. Конечно можно ! Зачем только ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2008, 10:54 |
|
||
|
темповые таблицы и транзакции
|
|||
|---|---|---|---|
|
#18+
MasterZiv Kru wrote: > На самом деле можно и временную таблицу внутри транзакции создать. Для > этого нужно в свойствах tempDb один флажок выставить (не помню какой). Конечно, можно ! Весь сервак застопорить до конца этой твоей транзакции. Конечно можно ! Зачем только ? Posted via ActualForum NNTP Server 1.4 Зачем? В жизни всякое бывает. В примере приведённом автором топика процедура написана неправильно. Но, в моём опыте был эпизод, когда разработчики клиента решили в одну, клиентскую транзакцию запихать несколько процедур в которых создавались временные таблицы. Результат был очевиден - такая-же ошибка как в начале топика. Приложение было старое, большей частью отлаженное и менять процедуры, которые использовались разными процессами никто не позволил. Оставалось одно из двух или от транзакции отказываться или галку (о которой я писал) в свойствах TempDb взводить. Промежуточное решение - отдельная TempDb, т.к. взводить галку на боевой системе администратор не разрешил. В конце концов порешили просто отказаться от транзакции на клиенте. (Думаю, что целостность потом проверяли отдельно и корректировали если что - а как ещё быть!?) Это, кстати, на заметку автору утверждения, что транзакции всегда должны быть на клиенте. В жизни всё сложнее чем в теории. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2008, 17:31 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=35500622&tid=2011397]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 149ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...