Переключение на Главную Страницу Страницы: 1 2 [3]  ОтправитьПечать
Очень популярная тема (более 25 ответов) запрос из нескольких баз одновременно (число прочтений - 36004 )
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: запрос из нескольких баз одновременно
Ответ #30 - 31. Мая 2006 :: 17:04
Печать  
aou1c писал(а) 31. Мая 2006 :: 16:59:
только, если включать отладку и дописывать везде руками "база.dbo."

А ты ожидал чего-то иного? Откуда вообще парсер при конструировании запроса из твоей виртуальной таблицы может догадаться, что ты лезешь в другую базу?
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
aou1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 183
Местоположение: Екатеринбург
Зарегистрирован: 29. Мая 2006
Пол: Мужской
Re: запрос из нескольких баз одновременно
Ответ #31 - 31. Мая 2006 :: 17:06
Печать  
Quan писал(а) 31. Мая 2006 :: 17:01:
aou1c писал(а) 31. Мая 2006 :: 16:54:
все это хорошо, но с виртуальными таблицами остатков это не работает

Ну, так не ленись - разберись, что получается на выходе метапарсера при наличии на входе виртуальной таблицы. И "ручками" построй то же самое, но уже не в вритуальном, а явном виде.

Улыбка Всех! Срочно! В обязательном порядке! Сначала - под rainbow.dll, а потом уже, с наработанным пониманием дела, - под 1С++  Улыбка


дак давно разобрался, просто вместо 5 строк запроса получается целая страница.

  
Наверх
ICQ  
IP записан
 
aou1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 183
Местоположение: Екатеринбург
Зарегистрирован: 29. Мая 2006
Пол: Мужской
Re: запрос из нескольких баз одновременно
Ответ #32 - 31. Мая 2006 :: 17:08
Печать  
Quan писал(а) 31. Мая 2006 :: 17:04:
aou1c писал(а) 31. Мая 2006 :: 16:59:
только, если включать отладку и дописывать везде руками "база.dbo."

А ты ожидал чего-то иного? Откуда вообще парсер при конструировании запроса из твоей виртуальной таблицы может догадаться, что ты лезешь в другую базу?


все правильно - парсеру нехватает структуры DDS другой базы
  
Наверх
ICQ  
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: запрос из нескольких баз одновременно
Ответ #33 - 31. Мая 2006 :: 17:09
Печать  
aou1c писал(а) 31. Мая 2006 :: 17:06:
дак давно разобрался, просто вместо 5 строк запроса получается целая страница.

Это не страшно. Н а ассемблере получилось бы еще больше. Класс
Так что радуйся  Улыбка, что прогресс меняет жизнь к лучшему.
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: запрос из нескольких баз одновременно
Ответ #34 - 31. Мая 2006 :: 17:10
Печать  
aou1c писал(а) 31. Мая 2006 :: 17:08:
все правильно - парсеру нехватает структуры DDS другой базы
Скажу больше: парсер вообще не в курсе, что вприроде существуют другие базы
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
aou1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 183
Местоположение: Екатеринбург
Зарегистрирован: 29. Мая 2006
Пол: Мужской
Re: запрос из нескольких баз одновременно
Ответ #35 - 31. Мая 2006 :: 17:15
Печать  
Quan писал(а) 31. Мая 2006 :: 17:10:
aou1c писал(а) 31. Мая 2006 :: 17:08:
все правильно - парсеру нехватает структуры DDS другой базы
Скажу больше: парсер вообще не в курсе, что вприроде существуют другие базы


Кажись я придумал как использовать вирт. таблицы в разных базах.

  
Наверх
ICQ  
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: запрос из нескольких баз одновременно
Ответ #36 - 31. Мая 2006 :: 18:19
Печать  
aou1c писал(а) 31. Мая 2006 :: 17:15:
Кажись я придумал как использовать вирт. таблицы в разных базах.

Ужас Ужас
КОЛИСЬ, НЕ ТЯНИ!
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
aou1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 183
Местоположение: Екатеринбург
Зарегистрирован: 29. Мая 2006
Пол: Мужской
Re: запрос из нескольких баз одновременно
Ответ #37 - 31. Мая 2006 :: 18:25
Печать  
Quan писал(а) 31. Мая 2006 :: 18:19:
aou1c писал(а) 31. Мая 2006 :: 17:15:
Кажись я придумал как использовать вирт. таблицы в разных базах.

Ужас Ужас
КОЛИСЬ, НЕ ТЯНИ!


Это годится только для моего узкого применения.
У баз почти одинаковые структуры, поэтому текст запроса с использованием вирт. таблиц тоже почти одинаковый.
Условие сформированное в одной базе записываю в таблицу в базу tempdb

Из другой базы условие вызываю через tempdb.dbo
  
Наверх
ICQ  
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: запрос из нескольких баз одновременно
Ответ #38 - 31. Мая 2006 :: 19:49
Печать  
Идея в целом понятна, хотя (если я правильно представляю реализацию) не в моем вкусе.

Мне все равно так низзя: базы в основном на разных серверах.

Что структуры одинаковые - это я уже догадался. Но думал, что ты просто ловишь запрос на выходе из парсера и каким-то образом находищь, куда вставить строку "ИмяБазы.dbo."
Кстати, не думал над таким вариантом.
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
aou1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 183
Местоположение: Екатеринбург
Зарегистрирован: 29. Мая 2006
Пол: Мужской
Re: запрос из нескольких баз одновременно
Ответ #39 - 01. Июня 2006 :: 06:55
Печать  
[quote author=Quan link=1148918179/20#38 date=1149104978]Идея в целом понятна, хотя (если я правильно представляю реализацию) не в моем вкусе.

Мне все равно так низзя: базы в основном на разных серверах.

Как раз можно.
временную таблицу с условием помещаешь на другой сервер, другую базу

select ... into сервер.база.dbo.таблица from ...

потом коннектишся к другой базе и вперед
  
Наверх
ICQ  
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: запрос из нескольких баз одновременно
Ответ #40 - 01. Июня 2006 :: 07:13
Печать  
aou1c писал(а) 01. Июня 2006 :: 06:55:
Как раз можно.
временную таблицу с условием помещаешь на другой сервер, другую базу

select ... into сервер.база.dbo.таблица from ...

потом коннектишся к другой базе и вперед

Не совсем понял.
Тем более, что временные #таблицы создаются в базе tempdb дефолтового сервера....

Ну, да Бог с ним,я уж как-то привык по своей методике: ручками-ручками и не лениться Улыбка

Бааа..... Пока писал - сообразил  Улыбка
Как же я забыл!
Возвращаясь к ранее сказанному:
aou1c писал(а) 31. Мая 2006 :: 16:25:
trad писал(а) 29. Мая 2006 :: 16:13:
в первой базе выполняем: select ... into #tmp ...
во второй: select ... in (select ... from #tmp)

временная таблица #tmp созданная в одном объекте ODBCRecordset, не видна в другом объекте ODBCRecordset.
если переключаешься УстБД(дб), тоже таблица становится  не видна

А для того, чтобы она была видна, нужно писАть не #tmp, а ##tmp.
Только нужно позаботиться об уникальности имени таблицы в многопользовательской среде.
На Итланде я кидал пример генерации имен. Найду - сюда перетащу.
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: запрос из нескольких баз одновременно
Ответ #41 - 01. Июня 2006 :: 07:17
Печать  
в той доработке, про которую говорилось выше, проблем с использованием ВТ нет
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: запрос из нескольких баз одновременно
Ответ #42 - 01. Июня 2006 :: 07:19
Печать  
Quan писал(а) 01. Июня 2006 :: 07:13:
aou1c писал(а) 31. Мая 2006 :: 16:25:
trad писал(а) 29. Мая 2006 :: 16:13:
в первой базе выполняем: select ... into #tmp ...
во второй: select ... in (select ... from #tmp)

временная таблица #tmp созданная в одном объекте ODBCRecordset, не видна в другом объекте ODBCRecordset.
если переключаешься УстБД(дб), тоже таблица становится  не видна

А для того, чтобы она была видна, нужно писАть не #tmp, а ##tmp.
Только нужно позаботиться об уникальности имени таблицы в многопользовательской среде.
На Итланде я кидал пример генерации имен. Найду - сюда перетащу.

нужно прилинковать сервер и все делать на одном коннекшене и не надо городить огород
  

1&&2&&3
Наверх
 
IP записан
 
aou1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 183
Местоположение: Екатеринбург
Зарегистрирован: 29. Мая 2006
Пол: Мужской
Re: запрос из нескольких баз одновременно
Ответ #43 - 01. Июня 2006 :: 07:29
Печать  
trad писал(а) 01. Июня 2006 :: 07:19:
Quan писал(а) 01. Июня 2006 :: 07:13:
aou1c писал(а) 31. Мая 2006 :: 16:25:
trad писал(а) 29. Мая 2006 :: 16:13:
в первой базе выполняем: select ... into #tmp ...
во второй: select ... in (select ... from #tmp)

временная таблица #tmp созданная в одном объекте ODBCRecordset, не видна в другом объекте ODBCRecordset.
если переключаешься УстБД(дб), тоже таблица становится  не видна

А для того, чтобы она была видна, нужно писАть не #tmp, а ##tmp.
Только нужно позаботиться об уникальности имени таблицы в многопользовательской среде.
На Итланде я кидал пример генерации имен. Найду - сюда перетащу.

нужно прилинковать сервер и все делать на одном коннекшене и не надо городить огород


может пример дашь, как прилинковать сервер на одном коннекшене с разными логинами и паролями?
  
Наверх
ICQ  
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: запрос из нескольких баз одновременно
Ответ #44 - 01. Июня 2006 :: 07:37
Печать  
aou1c писал(а) 01. Июня 2006 :: 07:29:
может пример дашь, как прилинковать сервер на одном коннекшене с разными логинами и паролями?


1. Еще раз внимательно читаешь данную ветку.

2. НаходишьQuan писал(а) 31. Мая 2006 :: 16:31:
Exclaim Ежели кто не в курсе - сообщаю: для работы с несколькими серверами внимательно изучаем хелповник на тему sp_addlinkedserver и sp_addlinkedserverlogin

3. Читаешь доку на sp_addlinkedserverlogin

4. Используешь sp_addlinkedserverlogin для трансляции логинов базового сервера в логины-пароли линкнутого сервака
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 
ОтправитьПечать