Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Временные данные  [new]
PZH
Member

Откуда:
Сообщений: 57
SQL server 2000
Процесс пишет временные данные в некоторую табличку, нужно сделать так, чтобы в случае отключения процесса - все что он записал удалялось. Как это реализуется?
6 мар 12, 22:39    [12206856]     Ответить | Цитировать Сообщить модератору
 Re: Временные данные  [new]
step_ks
Member

Откуда:
Сообщений: 936
Временные таблицы
6 мар 12, 22:49    [12206901]     Ответить | Цитировать Сообщить модератору
 Re: Временные данные  [new]
PZH
Member

Откуда:
Сообщений: 57
О! Я не уточнил!
Много процессов пишут и читают эту таблицу, но данные в ней должны быть только от "живых" процессов!
6 мар 12, 22:55    [12206918]     Ответить | Цитировать Сообщить модератору
 Re: Временные данные  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31994
PZH
О! Я не уточнил!
Много процессов пишут и читают эту таблицу, но данные в ней должны быть только от "живых" процессов!
ну а данные там разделяются по процессам?
6 мар 12, 23:16    [12206987]     Ответить | Цитировать Сообщить модератору
 Re: Временные данные  [new]
PZH
Member

Откуда:
Сообщений: 57
Нет, данные не разделяются, они нужны всем.
Грубо говоря один процесс знает жив ли другой и чем он занят.
6 мар 12, 23:35    [12207041]     Ответить | Цитировать Сообщить модератору
 Re: Временные данные  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31994
PZH
Нет, данные не разделяются, они нужны всем.
Грубо говоря один процесс знает жив ли другой и чем он занят.
То есть все процессы апдэйтят одно поле в одной строке?

Тогда задача нерешаема, как можно удалить данные, если неизвестно, кому они принадлежат???
6 мар 12, 23:40    [12207052]     Ответить | Цитировать Сообщить модератору
 Re: Временные данные  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
PZH
SQL server 2000
Процесс пишет временные данные в некоторую табличку, нужно сделать так, чтобы в случае отключения процесса - все что он записал удалялось. Как это реализуется?

Добавить поле SPID и периодически удалять записи, с идентификаторами которых нет в списке активных процессов.

Вообще это делается немного по другому - поле SPID чистится перед работой самого процесса... Если остались какие-то данные от прежнего процесса, то они будут вычищены.
А перед завершением работы процесса опять таки удалять записи со своим SPID/
.
7 мар 12, 01:04    [12207325]     Ответить | Цитировать Сообщить модератору
 Re: Временные данные  [new]
PZH
Member

Откуда:
Сообщений: 57
alexeyvg
То есть все процессы апдэйтят одно поле в одной строке?

Тогда задача нерешаема, как можно удалить данные, если неизвестно, кому они принадлежат???


Первое.
Ну вообще-то на время чтения/апдейта они блокируют таблицу. Так что не вижу тут разницы.

Второе.
Ну например серваку же известно какие процессы лапают глобальную и локальную временные таблицы, без затрат программиста на это. Так почему не должно быть механизмов, отвечающих тем требованиям которые я предоставил? Есть ли они? В этом и вопрос.

SQL2008
Добавить поле SPID и периодически удалять записи, с идентификаторами которых нет в списке активных процессов.

Вообще это делается немного по другому - поле SPID чистится перед работой самого процесса... Если остались какие-то данные от прежнего процесса, то они будут вычищены.
А перед завершением работы процесса опять таки удалять записи со своим SPID


Так и хотел, но что-то мне подсказывает, что можно сделать более правильно.
И кто будет заниматься этим администрированием таблички, если требуется чтобы данные мертвых процессов не жили желательно и секунды.
7 мар 12, 10:38    [12208101]     Ответить | Цитировать Сообщить модератору
 Re: Временные данные  [new]
Glory
Member

Откуда:
Сообщений: 104751
PZH
Второе.
Ну например серваку же известно какие процессы лапают глобальную и локальную временные таблицы, без затрат программиста на это. Так почему не должно быть механизмов, отвечающих тем требованиям которые я предоставил? Есть ли они? В этом и вопрос

Транзакция ???
7 мар 12, 10:49    [12208182]     Ответить | Цитировать Сообщить модератору
 Re: Временные данные  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
PZH
Так и хотел, но что-то мне подсказывает, что можно сделать более правильно.
И кто будет заниматься этим администрированием таблички, если требуется чтобы данные мертвых процессов не жили желательно и секунды.

Данные "мертвых процессов" мешают только если происходит наложение этих данных на данные нового процесса, но при старте процесса данные очищаются по новому значению SPID.
Ровно так сделано в Diasoft 5NT. Ни разу за все время (порядка 4 лет) не было никаких косяков.
7 мар 12, 10:53    [12208220]     Ответить | Цитировать Сообщить модератору
 Re: Временные данные  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
SQL2008
Добавить поле SPID и периодически удалять записи, с идентификаторами которых нет в списке активных процессов.

Вообще это делается немного по другому - поле SPID чистится перед работой самого процесса... Если остались какие-то данные от прежнего процесса, то они будут вычищены.
А перед завершением работы процесса опять таки удалять записи со своим SPID


Немного неточно написал - "поле SPID чистится перед работой самого процесса... " следует понимать как "данные в таблице удаляются по критерию SPID = @@spid (нового процесса) "
7 мар 12, 10:55    [12208235]     Ответить | Цитировать Сообщить модератору
 Re: Временные данные  [new]
PZH
Member

Откуда:
Сообщений: 57
Glory
Транзакция ???

Часть данных должны жить после смерти процесса а часть должны умереть вместе с ним. Я не знаю о параллельных независимых транзакциях одного процесса.

SQL2008,
А если какой-то процесс наивно ожидает чего-нибудь от умершего, полагая что тот жив, а новый не создается (т.е. не подчищает за умершим)? Тогда нужно будет постоянно сверять по спидам активных процессов при каждом чихе, что как-то шляпно.
7 мар 12, 15:21    [12210686]     Ответить | Цитировать Сообщить модератору
 Re: Временные данные  [new]
Glory
Member

Откуда:
Сообщений: 104751
PZH
Часть данных должны жить после смерти процесса а часть должны умереть вместе с ним. Я не знаю о параллельных независимых транзакциях одного процесса.

Ну так все равно транзакция. Для той части, "что должна умереть"
7 мар 12, 15:23    [12210696]     Ответить | Цитировать Сообщить модератору
 Re: Временные данные  [new]
PZH
Member

Откуда:
Сообщений: 57
Glory,
Как это? Ведь после открытия транзакции все следующие действия будут вложенными и все сдохнет вместе с процессом. Можно пример?
7 мар 12, 15:29    [12210744]     Ответить | Цитировать Сообщить модератору
 Re: Временные данные  [new]
Glory
Member

Откуда:
Сообщений: 104751
PZH
Как это? Ведь после открытия транзакции все следующие действия будут вложенными и все сдохнет вместе с процессом. Можно пример?

А кто говорит про одну транзакцию то ?
Транзакция - это набор действий, которые либо все выполнится, либо не выполнится
7 мар 12, 15:35    [12210804]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить