Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
Необходимо собрать данные с MS SQL серверов о наличии. Проблема была решена с помощью линковки филиальных серверов и запроса Select ‘Филиал 1’, * from server1.work.dbo.goods Union all Select ‘Филиал 2’, * from server2.work.dbo.goods Union all Select ‘Филиал 3’, * from server3.work.dbo.goods Недостатки такого подхода – линковка работает медленнее чем прямое соединение с сервером – однопоточность Родилась идея под каждый сервер создавать свое соединение и выбирать данные многопоточно. А вот как полученные результаты собрать и показать в DBGRID ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 14:05 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
пиши вьюху, ходи к ней, показывай в гриде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 15:12 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
Я и без View хожу и показываю в grid Смыл-то был в разделении запроса 1 запрос - Select ‘Филиал 1’, * from server1.work.dbo.goods Параллельно 2 запрос - Select ‘Филиал 2’, * from server2.work.dbo.goods И т.д. Получаем набор рекодсетов. Эти наборы надо соединить и показать в DBGRID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 15:36 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
Ааа, ну тады - запихай это все в TStringGrid или - я не помню где, но видал компоненту TMemoryTable... свали в нее все что надо и показывай в гриде. вот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 15:42 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
Спасибо. Поищем. Была еще идея. Держать на основном сервере временную таблицу. Скидывать в нее промежуточные результаты и показывать в DBGRID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 15:49 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
Проходили... сложно и не надежно... Сделай проще: 1. src]create view kaka as select 1 as тип, * from server1..... union all select 1 as тип, * from server2..... [/src] А потом сделай SP которой передавай все что надо... Почему так?: 1. т.к. отпадает гемор с обновлением таблицы. 2. при больом колве юзеров будут локи. 3. вьюха гарантирует отображение наиб. точного состояния данных. 4 если не критично - в селектах делай with (nolock) вот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 15:56 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
Минус при использовании view: -один из серверов может не отвечать -что делать в случае не полного выбора филиалов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 16:14 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
тогда надо спросить гуру как сделать контроль активности линк-сервака... без прерывания выполнения запроса... на сколько я знаю такое только в SP можно сделать... дааа... таблица будет предпочтительнее.. в таком случае я бы сделал джобы которые сваливали периодически инфу в твою таблицу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 16:31 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
Периодически то-же не пойдет. Нужен режим on-line. Такая специфика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 16:48 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
тады запихай в разные потоки TThread подключение к серверу... прога тормозить почти не будет... при длительном таймауте... при попытке подкл. можно ишо попробовать напрямик через апи сервера. поглялди сорцы на сях в папке инсталляции сервака... можно еще в инете пошарить .... я где-то видал подобные компоненты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 17:12 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
Не только подключение к серверу, но и TQuery. Вот к этому результату я и пришел с минусом. А вот как полученные результаты собрать и показать в DBGRID ? Спасибо за идеи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 17:35 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
1. порой в инете tmemorytable - единственный путь юзать на клиенте - временную таблицу. у меня где-то валялась эта компонента... но найти не могу что-то. 2. или заюзай tstringgrid или tdrawgrid. или в компонентах сделай стока колонок скока надо и, допустим, в первой храни указатель на запись - ИМЕННО указатель - ето TQuery.GetBookmark. затем перехвати отрисофку грида и совершенно спокойно ходи по указателю на нужную запись и рисуй все, что надо.. ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 17:45 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
.. то что я написал после или касалась п.2. можно еще попробовать на серваке создать временную таблицу с решеткой в наименовании, которая грохнется автоматом и сваливай в нее посредством вызова sp к каждому линк серверу что те надо... потом делаешь от туда селект, потом убиваешь таблицу. я бы так ишо попытался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 17:49 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
... токма хитрость здесь в том, что я гдето видал xp_xxx процедуру, которая тестит линк на активность - но имя ее не помню... она не документирована ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 17:51 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
... и в догонку... я выступаю за то чтобы любая прога была только мордой ко вьюхам и sp - вся логика должна делаться на серваке! у меня вся логика там - бед не знаю. юзверь заносит/модифицирует данные через СП. видит - через вью а логика вся на серваке - делфи выполняет роль кряксивой обложке - и менять екзешник мало приходится. вот))) имхо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 17:55 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
Согласен. Скорее всего поступлю так. Соединяюсь с основным сервером. Перед выборкой данных с филиальных серверов создаю по основному коннекту временную таблицу с решеткой. Запускаю в потоке соединение с филиальным сервером, выполняю запрос, получаю результат. После получения результата перебрасываю его во временную таблицу. Перечитываю DBGrid И т.д. по мере получения с филиалов информации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 18:09 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
Нее, я немного не это имел ввиду - временная таблица живет один раз до конца работы с СП, у меня большинство извращенных отчетов - записывают промежуточные куски во временную таблицу - я делаю из нее селект - и спокойно убиваю ее. ето работает для всех юзеров. т.к. юзерам имхо не стоит давать права на создание таблиц))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 18:25 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
Не понятно. А где аккумулировать данные ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 18:36 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32070981&tid=2119623]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 171ms |

| 0 / 0 |
