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

Откуда:
Сообщений: 8
Всем доброго времени суток!
Прошу помощи по сабжу. Имеется 15 баз данных одинаковой структуры, которые велись в разных отделах, на MSSQL 2000. в настоящее время ведение этих баз остановлено, но данные из них периодически нужны. По каждой из этих баз нужно проверять людей на предмет пересечения пункта пропуска за определенный период. Обращение к одной базе для проверки людей я решил с помощью создания временной таблицы, в которую загружаю список лиц для проверки. Как мне организовать обращение ко всем базам сразу? Базы присоединить к одному серверу но с разными именами...либо объединить информацию из всех баз в одну?

--Создаем временную таблицу из файла--
create table #fnew (FIO varchar (100), BirthDate varchar (10))
bulk insert #fnew
from '\\ADMBDK\C$\test.txt' -- указать правильный путь к файлу--
with (FIRSTROW = 2, MAXERRORS = 100,FIELDTERMINATOR = ',',ROWTERMINATOR = '\n')
--Выполняем запрос--
select Family+' '+Name as 'ПЕРЕСЕКАЛ',FIO as 'В ЗАПРОСЕ',
convert (varchar (10),Birthday,3)as 'ДР ПЕРЕСЕКШЕГО',BirthDate as 'ДР В ЗАПРОСЕ',
DecisionName as 'РЕШЕНИЕ', convert (varchar (50),OperationTime,9) as 'ДАТА И ВРЕМЯ ПЕРЕСЕЧЕНИЯ'
from spk_VPassenger,#fnew
where OperationTime between '2003-01-01 00:00:00.00'
                        and '2015-09-01 23:59:00.00'
						and Family = left (FIO,Charindex(' ',FIO)) --вместо можно написать "and Family+' '+Name=FIO" для точных совпадений--
						and right (year(Birthday),2)=right (BirthDate,2)
						and day(Birthday)= left (BirthDate,2)


Сообщение было отредактировано: 20 фев 15, 21:12
20 фев 15, 21:09    [17295570]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по нескольким базам данных  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
Поларин,

Прилинкованные сервера и точечная нотация при обращении к объектам и в те времена существовали.
21 фев 15, 14:41    [17296963]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по нескольким базам данных  [new]
#fnew
Guest
Поларин,

автор
в настоящее время ведение этих баз остановлено

автор
Как мне организовать обращение ко всем базам сразу? Базы присоединить к одному серверу но с разными именами...либо объединить информацию из всех баз в одну?

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

как уже правильно заметили, сейчас тоже нет большой необходимости каждый раз что-то куда-то переливать.
21 фев 15, 16:05    [17297148]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по нескольким базам данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31435
Поларин
Базы присоединить к одному серверу но с разными именами...либо объединить информацию из всех баз в одну?
Можно присоединить.
Но проще ИМХО слить данные в одну базу, и с ней работать. Будет проще писать запросы, обслуживать и т.д.
Вам же нужны 1-2-3 таблички, вряд ли больше для задачи "нужно проверять людей на предмет пересечения пункта пропуска за определенный период"
21 фев 15, 21:17    [17297568]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по нескольким базам данных  [new]
Поларин
Member

Откуда:
Сообщений: 8
alexeyvg
Поларин
Базы присоединить к одному серверу но с разными именами...либо объединить информацию из всех баз в одну?
Можно присоединить.
Но проще ИМХО слить данные в одну базу, и с ней работать. Будет проще писать запросы, обслуживать и т.д.
Вам же нужны 1-2-3 таблички, вряд ли больше для задачи "нужно проверять людей на предмет пересечения пункта пропуска за определенный период"

В каждой из этих баз есть всего одно представление с именем spk_VPassenger, информация из которого мне нужна. Но,к сожалению, я понятия не имею как мне грамотно это сделать. Я в общем-то представляю, что вероятно нужно создать какую-то отдельную БД, в которую можно было бы слить всю инфу из всех баз.
24 фев 15, 18:29    [17306846]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по нескольким базам данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31435
Поларин
Но,к сожалению, я понятия не имею как мне грамотно это сделать. Я в общем-то представляю, что вероятно нужно создать какую-то отдельную БД, в которую можно было бы слить всю инфу из всех баз.
Ну что поделать. Учитесь, либо обратитесь к специалисту.

Естественно, для такого пути нужно создать базу данных, либо разместить объекты в какой то существующей.

Далее, можно перенести необходимые таблицы и представление. Или можно перенести данные представления, как таблицу. Зависит от запросов и данных, которые вам требуются.

Сам перенос можно сделать многими способами.
Например, можно визардом экспорта/импорта. Можно написать SSIS пакет. Можно создать linked-server. Можно сделать скрипт с командами insert
Зависит от количества таблиц и объёма данных.
24 фев 15, 20:57    [17307318]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по нескольким базам данных  [new]
Поларин
Member

Откуда:
Сообщений: 8
alexeyvg,
К специалисту обращаться не хочу. интересно сделать самому. Вот и учусь на собственных ошибках.
Есть возможность создать такую же базу данных как эти 15 , т.е. с той же структурой, только абсолютно чистую. вопрос в следующем: если переносить данные мастером экспорта, то с первой БД я думаю проблем не будет, а вот данные из второй и последующих БД не будут переноситься, так как в каждой из этих БД под одним и тем же номером (к примеру в таблице OU_List) стоят абсолютно разные фамилии.
24 фев 15, 21:06    [17307344]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по нескольким базам данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31435
Поларин
alexeyvg,
К специалисту обращаться не хочу. интересно сделать самому. Вот и учусь на собственных ошибках.
Есть возможность создать такую же базу данных как эти 15 , т.е. с той же структурой, только абсолютно чистую. вопрос в следующем: если переносить данные мастером экспорта, то с первой БД я думаю проблем не будет, а вот данные из второй и последующих БД не будут переноситься, так как в каждой из этих БД под одним и тем же номером (к примеру в таблице OU_List) стоят абсолютно разные фамилии.
В таком случае нужно придумать логику объединения данных.

В приложении, которое их использует (будет использовать), ведь такая логика есть, приложение же не смущает, что есть 2 пользователя с одинаковым ИД? Видимо, оно эти унаследованные ИД вообще не использует?

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

Допустим, "По каждой из этих баз нужно проверять людей на предмет пересечения пункта пропуска за определенный период." - как проверяется - по фамилии? По табельному номеру?
Какие данные вам нужны из тех баз? Все? Или табельный номер+номер пункта пропуска+время прохода?

Вот и спроектируйте бизнес модель, определите нужные данные, нужные бизнес-запросы.

Потом спроецируйте бизнес-модель на те старые физические таблицы, определите, какие поля из них вам нужны.
Сделайте новую таблицу на основании этого проектирования.
И переносите данные уже в новую таблицу из всех старых. После такого проектирования у вас таких вопросов "под одним и тем же номером (к примеру в таблице OU_List) стоят абсолютно разные фамилии" не будет.
24 фев 15, 21:24    [17307403]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по нескольким базам данных  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Поларин, залейте все в общие таблицы, добавьте справочники баз и идентификаторы баз в каждую таблицу.
24 фев 15, 22:18    [17307605]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по нескольким базам данных  [new]
SHok_by
Member

Откуда: Minsk
Сообщений: 51
Создать SSIS пакет и в Dataflow task сделать multicast на 15 потоков и каждый поток лезет в свою базу, в конце все потоки объединяются и складывается информация в файл или в результирующую таблицу в базе.
10 мар 15, 13:30    [17364345]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить