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

Откуда:
Сообщений: 74
Возник вопрос, что лучше использовать временную таблицу, либо реальную таблицу.
Задача такая, когда пользователь открывает документ то данные должны поступить в некую промежуточную таблицу. Если использовать ту же таблицу то придется использовать некий ID сессии чтобы различать открытые документы пользователей и при больших объемах данных изменения в документе будут более затратными.
Так вот, идеи такие:
1)входе в программу создать временную таблицу ## и в нее по мере необходимости помещать открытые документы. При выходе из программы сессия рвется и соответсвтенно данные удаляются.
2)создать 1 реальную таблицу на всех пользователей и туда помещать документы открытые. Там появится тогда номер сеанса чтобы каждый пользователь видел только свои документы. + Есть момент что если пользователь вышел из программы во время работы с документом то данные в таблице остануться и со временем там накопится куча ненужного хлама.
3) при входе в программу создавать таблицу например Docs+'ID сессии'. Пользователь работает в ней, а при выходе из программы то создать триггер который будет удалять данные таблицы.

Как считаете, какой метод более рационален?
21 май 15, 11:20    [17670548]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20960
Первый.
21 май 15, 11:24    [17670573]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
MSSQLBug
Guest
Smoke999
Как считаете, какой метод более рационален?

Я считаю, что Вам нужно сначала объяснить, с какой целью Вам это нужно. ;)
21 май 15, 11:25    [17670574]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Wilhelm Holtoff
Member

Откуда:
Сообщений: 85
Smoke999
Есть момент что если пользователь вышел из программы во время работы с документом то данные в таблице остануться и со временем там накопится куча ненужного хлама.
Нет такого момента.
Ничто не помешает тебе добавить столбец, где будет храниться отметка времени записи в эту таблицу и какой нибудь джоб потом почистит строки, давность которых больше, например 48 часов.
21 май 15, 11:27    [17670589]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Wilhelm Holtoff
Member

Откуда:
Сообщений: 85
Smoke999
3) при входе в программу создавать таблицу например Docs+'ID сессии'. Пользователь работает в ней, а при выходе из программы то создать триггер который будет удалять данные таблицы.
это бред эпичнейший. Сам додумался или подсказал кто ?
21 май 15, 11:28    [17670605]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Smoke999
Как считаете, какой метод более рационален?

Вы мастерите свой "блокировочник документа" что ли ?
21 май 15, 11:33    [17670644]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Smoke999, поправка, вы предлагаете использовать глобальные временные таблицы (##), тогда как для вашего случая должно быть достаточно локальной временной таблицы (#).

Кроме области видимости разница еще и в том, что локальные временные таблицы с одним именем вы можете создавать в каждой сессии, тогда как глобальные должны иметь уникальное имя, т.к. они видимы для всех.
21 май 15, 11:37    [17670668]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Smoke999
Member

Откуда:
Сообщений: 74
Glory
Smoke999
Как считаете, какой метод более рационален?

Вы мастерите свой "блокировочник документа" что ли ?


... я перечислил варианты. Тут не сказано что я его собрался использовать.

Wilhelm Holtoff
Нет такого момента.
Ничто не помешает тебе добавить столбец, где будет храниться отметка времени записи в эту таблицу и какой нибудь джоб потом почистит строки, давность которых больше, например 48 часов.


... тут тоже не сказано что он не решаем)

Minamoto
Smoke999, поправка, вы предлагаете использовать глобальные временные таблицы (##), тогда как для вашего случая должно быть достаточно локальной временной таблицы (#).

Кроме области видимости разница еще и в том, что локальные временные таблицы с одним именем вы можете создавать в каждой сессии, тогда как глобальные должны иметь уникальное имя, т.к. они видимы для всех.


...нет. Если # то при следующем запросе пишет что таблица #.. не существует. Я так понимаю что ее можно использовать только в рамках 1 Query. В следующем не видно.

Задача такая. Допустим есть сохраненный документ. Его требуется редактировать. Соответственно нужно создать копию данных, ведь пользователь может не сохранить потом измененный результат. Значит данные нужно куда-то скопировать для работы с ними. Вот и все.
21 май 15, 12:05    [17670870]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20960
Smoke999
Если # то при следующем запросе пишет что таблица #.. не существует.
Это означает, что для каждого запроса создаётся новое соединение с сервером. Что в общем не очень хорошо. Настройте коннектор на постоянное соединение с БД.
21 май 15, 12:08    [17670889]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Smoke999
...нет. Если # то при следующем запросе пишет что таблица #.. не существует. Я так понимаю что ее можно использовать только в рамках 1 Query. В следующем не видно.

Вы бы мануалы почитали, прежде чем такую чушь говорить.

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

Временная таблица доступна только в сессии, создавшей ее, и до момента, пока сессия не будет закрыта или временная таблица не будет явным образом удалена.

https://technet.microsoft.com/ru-ru/library/ms186986.aspx

Если вы делаете несколько сессий, то глобальная временная таблица тоже может не подойти - в случае, если создавшая ее сессия будет погашена до того, как создастся новая, которая будет к ней обращаться, то глобальная временная таблица также будет удалена.
21 май 15, 12:10    [17670904]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Smoke999
... я перечислил варианты. Тут не сказано что я его собрался использовать.

Вау. Я заметил

Smoke999
Если # то при следующем запросе пишет что таблица #.. не существует.

Это значит, что создали # в другом коннекте. Или в в другом пакете

Smoke999
Значит данные нужно куда-то скопировать для работы с ними. Вот и все.

А зачем для этого таблица на сервере ?
21 май 15, 12:10    [17670907]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Smoke999
Member

Откуда:
Сообщений: 74
Glory
Smoke999
... я перечислил варианты. Тут не сказано что я его собрался использовать.

Вау. Я заметил

Smoke999
Если # то при следующем запросе пишет что таблица #.. не существует.

Это значит, что создали # в другом коннекте. Или в в другом пакете

Smoke999
Значит данные нужно куда-то скопировать для работы с ними. Вот и все.

А зачем для этого таблица на сервере ?


..отлично что заметил.
.. в другом пакете. поэтому и ##
.. Потому что если не на сервере тогда чтобы смотреть остатки например с учетом данного документа придется соединять таблицы на сервере и с локальной бд.
21 май 15, 12:16    [17670934]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Smoke999
Потому что если не на сервере тогда чтобы смотреть остатки например с учетом данного документа придется соединять таблицы на сервере и с локальной бд.

Мда. Вы не умеете на клиенте составить текст запроса с фильтрами из прочитанных перед этим значений с сервера ?
21 май 15, 12:21    [17670953]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Smoke999
Member

Откуда:
Сообщений: 74
Клиент находится на сервере, зачем городить огороды
21 май 15, 12:23    [17670966]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Smoke999
Клиент находится на сервере

Что ???
21 май 15, 12:25    [17670974]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Smoke999
Member

Откуда:
Сообщений: 74
хотел сказать что программа находится на сервере, и проще все делать там же
21 май 15, 12:50    [17671107]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34657
Akina
Первый.


второе тоже вполне годится.
Данные ничейных сессий можно удалять при начале работы каждой сессии с таблицей.
21 май 15, 12:50    [17671109]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Smoke999
хотел сказать что программа находится на сервере, и проще все делать там же

Эпик фейл. А если бы программа находилась на удаленной рабочей станции, то вы бы таблицы вообще не создавали ?
21 май 15, 12:53    [17671126]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Smoke999
Member

Откуда:
Сообщений: 74
тогда был бы другой вопрос. Она будет находится на сервере
21 май 15, 12:56    [17671149]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Wilhelm Holtoff
Member

Откуда:
Сообщений: 85
Smoke999
Клиент находится на сервере, зачем городить огороды


К сообщению приложен файл. Размер - 4Kb
21 май 15, 12:57    [17671156]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Smoke999
тогда был бы другой вопрос. Она будет находится на сервере

Ну да, ну да, и поэтому все должно делаться на сервере.
Только зачем тогда вообще нужно ваше приложение, если _все_ будет делаться на сервере ?
21 май 15, 12:58    [17671165]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Wilhelm Holtoff
Member

Откуда:
Сообщений: 85
Smoke999, а классно ты протроллил форумчан. Level up !
21 май 15, 13:00    [17671175]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Smoke999
Member

Откуда:
Сообщений: 74
я просто не понимаю зачем отвечать на вопросы которые не задают.
Вроде здесь форум, где можно задать вопрос и получить какой-то ответ. А не получить кучу не нужной информации. Я согласен, что то что все будет выполнятся на сервере не совсем правильно, но пока так. Если что-то изменится то разнести уже будет делом механическим.
21 май 15, 13:05    [17671199]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Smoke999
Member

Откуда:
Сообщений: 74
может я не прав конечно, и если сказал что-то не так то сорри
21 май 15, 13:08    [17671219]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по временным таблицам.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Smoke999
А не получить кучу не нужной информации.

Если ваш уровень знаний низок, то это не значит, что информация ненужная.

Smoke999
Вроде здесь форум, где можно задать вопрос и получить какой-то ответ.

Вот вы и получили ответы. Если они вам не нравяться, то дело в вопросе наверное

Smoke999
я просто не понимаю зачем отвечать на вопросы которые не задают.

Потому что "Вроде здесь форум". Здесь ведут диалог, а не монолог.
21 май 15, 13:11    [17671237]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить