Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Smoke999 Member Откуда: Сообщений: 74 |
Возник вопрос, что лучше использовать временную таблицу, либо реальную таблицу. Задача такая, когда пользователь открывает документ то данные должны поступить в некую промежуточную таблицу. Если использовать ту же таблицу то придется использовать некий ID сессии чтобы различать открытые документы пользователей и при больших объемах данных изменения в документе будут более затратными. Так вот, идеи такие: 1)входе в программу создать временную таблицу ## и в нее по мере необходимости помещать открытые документы. При выходе из программы сессия рвется и соответсвтенно данные удаляются. 2)создать 1 реальную таблицу на всех пользователей и туда помещать документы открытые. Там появится тогда номер сеанса чтобы каждый пользователь видел только свои документы. + Есть момент что если пользователь вышел из программы во время работы с документом то данные в таблице остануться и со временем там накопится куча ненужного хлама. 3) при входе в программу создавать таблицу например Docs+'ID сессии'. Пользователь работает в ней, а при выходе из программы то создать триггер который будет удалять данные таблицы. Как считаете, какой метод более рационален? |
21 май 15, 11:20 [17670548] Ответить | Цитировать Сообщить модератору |
Akina Member Откуда: Зеленоград, Москва, Россия Сообщений: 20960 |
Первый. |
21 май 15, 11:24 [17670573] Ответить | Цитировать Сообщить модератору |
MSSQLBug
Guest |
Я считаю, что Вам нужно сначала объяснить, с какой целью Вам это нужно. ;) |
||
21 май 15, 11:25 [17670574] Ответить | Цитировать Сообщить модератору |
Wilhelm Holtoff Member Откуда: Сообщений: 85 |
Ничто не помешает тебе добавить столбец, где будет храниться отметка времени записи в эту таблицу и какой нибудь джоб потом почистит строки, давность которых больше, например 48 часов. |
||
21 май 15, 11:27 [17670589] Ответить | Цитировать Сообщить модератору |
Wilhelm Holtoff Member Откуда: Сообщений: 85 |
|
||
21 май 15, 11:28 [17670605] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Вы мастерите свой "блокировочник документа" что ли ? |
||
21 май 15, 11:33 [17670644] Ответить | Цитировать Сообщить модератору |
Minamoto Member Откуда: Москва Сообщений: 1162 |
Smoke999, поправка, вы предлагаете использовать глобальные временные таблицы (##), тогда как для вашего случая должно быть достаточно локальной временной таблицы (#). Кроме области видимости разница еще и в том, что локальные временные таблицы с одним именем вы можете создавать в каждой сессии, тогда как глобальные должны иметь уникальное имя, т.к. они видимы для всех. |
21 май 15, 11:37 [17670668] Ответить | Цитировать Сообщить модератору |
Smoke999 Member Откуда: Сообщений: 74 |
... я перечислил варианты. Тут не сказано что я его собрался использовать.
... тут тоже не сказано что он не решаем)
...нет. Если # то при следующем запросе пишет что таблица #.. не существует. Я так понимаю что ее можно использовать только в рамках 1 Query. В следующем не видно. Задача такая. Допустим есть сохраненный документ. Его требуется редактировать. Соответственно нужно создать копию данных, ведь пользователь может не сохранить потом измененный результат. Значит данные нужно куда-то скопировать для работы с ними. Вот и все. |
||||||||
21 май 15, 12:05 [17670870] Ответить | Цитировать Сообщить модератору |
Akina Member Откуда: Зеленоград, Москва, Россия Сообщений: 20960 |
|
||
21 май 15, 12:08 [17670889] Ответить | Цитировать Сообщить модератору |
Minamoto Member Откуда: Москва Сообщений: 1162 |
Вы бы мануалы почитали, прежде чем такую чушь говорить. Пишет, что таблица не существует потому, что вы следующий запрос в отдельном коннекте делаете - новую сессию создаете. Временная таблица доступна только в сессии, создавшей ее, и до момента, пока сессия не будет закрыта или временная таблица не будет явным образом удалена. https://technet.microsoft.com/ru-ru/library/ms186986.aspx Если вы делаете несколько сессий, то глобальная временная таблица тоже может не подойти - в случае, если создавшая ее сессия будет погашена до того, как создастся новая, которая будет к ней обращаться, то глобальная временная таблица также будет удалена. |
||
21 май 15, 12:10 [17670904] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Вау. Я заметил
Это значит, что создали # в другом коннекте. Или в в другом пакете
А зачем для этого таблица на сервере ? |
||||||
21 май 15, 12:10 [17670907] Ответить | Цитировать Сообщить модератору |
Smoke999 Member Откуда: Сообщений: 74 |
..отлично что заметил. .. в другом пакете. поэтому и ## .. Потому что если не на сервере тогда чтобы смотреть остатки например с учетом данного документа придется соединять таблицы на сервере и с локальной бд. |
||||||||
21 май 15, 12:16 [17670934] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Мда. Вы не умеете на клиенте составить текст запроса с фильтрами из прочитанных перед этим значений с сервера ? |
||
21 май 15, 12:21 [17670953] Ответить | Цитировать Сообщить модератору |
Smoke999 Member Откуда: Сообщений: 74 |
Клиент находится на сервере, зачем городить огороды |
21 май 15, 12:23 [17670966] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Что ??? |
||
21 май 15, 12:25 [17670974] Ответить | Цитировать Сообщить модератору |
Smoke999 Member Откуда: Сообщений: 74 |
хотел сказать что программа находится на сервере, и проще все делать там же |
21 май 15, 12:50 [17671107] Ответить | Цитировать Сообщить модератору |
MasterZiv Member Откуда: Питер Сообщений: 34657 |
второе тоже вполне годится. Данные ничейных сессий можно удалять при начале работы каждой сессии с таблицей. |
||
21 май 15, 12:50 [17671109] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Эпик фейл. А если бы программа находилась на удаленной рабочей станции, то вы бы таблицы вообще не создавали ? |
||
21 май 15, 12:53 [17671126] Ответить | Цитировать Сообщить модератору |
Smoke999 Member Откуда: Сообщений: 74 |
тогда был бы другой вопрос. Она будет находится на сервере |
21 май 15, 12:56 [17671149] Ответить | Цитировать Сообщить модератору |
Wilhelm Holtoff Member Откуда: Сообщений: 85 |
К сообщению приложен файл. Размер - 4Kb |
||
21 май 15, 12:57 [17671156] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Ну да, ну да, и поэтому все должно делаться на сервере. Только зачем тогда вообще нужно ваше приложение, если _все_ будет делаться на сервере ? |
||
21 май 15, 12:58 [17671165] Ответить | Цитировать Сообщить модератору |
Wilhelm Holtoff Member Откуда: Сообщений: 85 |
Smoke999, а классно ты протроллил форумчан. Level up ! |
21 май 15, 13:00 [17671175] Ответить | Цитировать Сообщить модератору |
Smoke999 Member Откуда: Сообщений: 74 |
я просто не понимаю зачем отвечать на вопросы которые не задают. Вроде здесь форум, где можно задать вопрос и получить какой-то ответ. А не получить кучу не нужной информации. Я согласен, что то что все будет выполнятся на сервере не совсем правильно, но пока так. Если что-то изменится то разнести уже будет делом механическим. |
21 май 15, 13:05 [17671199] Ответить | Цитировать Сообщить модератору |
Smoke999 Member Откуда: Сообщений: 74 |
может я не прав конечно, и если сказал что-то не так то сорри |
21 май 15, 13:08 [17671219] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Если ваш уровень знаний низок, то это не значит, что информация ненужная.
Вот вы и получили ответы. Если они вам не нравяться, то дело в вопросе наверное
Потому что "Вроде здесь форум". Здесь ведут диалог, а не монолог. |
||||||
21 май 15, 13:11 [17671237] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Microsoft SQL Server | ![]() |