|
|
|
Получение данных
|
|||
|---|---|---|---|
|
#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:36 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
пиши вьюху, ходи к ней, показывай в гриде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 15:12:43 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#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:54 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
Ааа, ну тады - запихай это все в TStringGrid или - я не помню где, но видал компоненту TMemoryTable... свали в нее все что надо и показывай в гриде. вот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 15:42:47 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
Спасибо. Поищем. Была еще идея. Держать на основном сервере временную таблицу. Скидывать в нее промежуточные результаты и показывать в DBGRID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 15:49:39 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#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:51 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
Минус при использовании view: -один из серверов может не отвечать -что делать в случае не полного выбора филиалов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 16:14:42 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
тогда надо спросить гуру как сделать контроль активности линк-сервака... без прерывания выполнения запроса... на сколько я знаю такое только в SP можно сделать... дааа... таблица будет предпочтительнее.. в таком случае я бы сделал джобы которые сваливали периодически инфу в твою таблицу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 16:31:38 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
Периодически то-же не пойдет. Нужен режим on-line. Такая специфика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 16:48:15 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
тады запихай в разные потоки TThread подключение к серверу... прога тормозить почти не будет... при длительном таймауте... при попытке подкл. можно ишо попробовать напрямик через апи сервера. поглялди сорцы на сях в папке инсталляции сервака... можно еще в инете пошарить .... я где-то видал подобные компоненты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 17:12:37 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
Не только подключение к серверу, но и TQuery. Вот к этому результату я и пришел с минусом. А вот как полученные результаты собрать и показать в DBGRID ? Спасибо за идеи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 17:35:03 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
1. порой в инете tmemorytable - единственный путь юзать на клиенте - временную таблицу. у меня где-то валялась эта компонента... но найти не могу что-то. 2. или заюзай tstringgrid или tdrawgrid. или в компонентах сделай стока колонок скока надо и, допустим, в первой храни указатель на запись - ИМЕННО указатель - ето TQuery.GetBookmark. затем перехвати отрисофку грида и совершенно спокойно ходи по указателю на нужную запись и рисуй все, что надо.. ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 17:45:44 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
.. то что я написал после или касалась п.2. можно еще попробовать на серваке создать временную таблицу с решеткой в наименовании, которая грохнется автоматом и сваливай в нее посредством вызова sp к каждому линк серверу что те надо... потом делаешь от туда селект, потом убиваешь таблицу. я бы так ишо попытался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 17:49:17 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
... токма хитрость здесь в том, что я гдето видал xp_xxx процедуру, которая тестит линк на активность - но имя ее не помню... она не документирована ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 17:51:53 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
... и в догонку... я выступаю за то чтобы любая прога была только мордой ко вьюхам и sp - вся логика должна делаться на серваке! у меня вся логика там - бед не знаю. юзверь заносит/модифицирует данные через СП. видит - через вью а логика вся на серваке - делфи выполняет роль кряксивой обложке - и менять екзешник мало приходится. вот))) имхо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 17:55:43 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
Согласен. Скорее всего поступлю так. Соединяюсь с основным сервером. Перед выборкой данных с филиальных серверов создаю по основному коннекту временную таблицу с решеткой. Запускаю в потоке соединение с филиальным сервером, выполняю запрос, получаю результат. После получения результата перебрасываю его во временную таблицу. Перечитываю DBGrid И т.д. по мере получения с филиалов информации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 18:09:42 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
Нее, я немного не это имел ввиду - временная таблица живет один раз до конца работы с СП, у меня большинство извращенных отчетов - записывают промежуточные куски во временную таблицу - я делаю из нее селект - и спокойно убиваю ее. ето работает для всех юзеров. т.к. юзерам имхо не стоит давать права на создание таблиц))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 18:25:26 |
|
||
|
Получение данных
|
|||
|---|---|---|---|
|
#18+
Не понятно. А где аккумулировать данные ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 18:36:20 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32070986&tid=2119623]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
185ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 483ms |

| 0 / 0 |
