Форум: "Прочее";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];
ВнизОбновление ряда таблиц БД из другой БД СУБД SQL Server 2005 Найти похожие ветки
← →
Kostafey © (2007-11-13 22:58) [0]Существовала БД, была сделана ее копия.
Затем в структуру копии БД были внесены
некоторые изменения.
Однако, в течение этого времени в оригинал БД
продолжали вноситься данные (данные вносились
в таблицы той части БД, структура которых не
подвергалась изменениям).
Теперь необходимо привести данные копии БД
к актуальному состоянию. Т.е. чатсть данных
из ряда таблиц оригинальной БД обновить, ряд данных
добавить.
Как лучше всего это сделать?
← →
Anatoly Podgoretsky © (2007-11-13 23:00) [1]> Kostafey (13.11.2007 22:58:00) [0]
Лучше всего через UPDATE
← →
Kostafey © (2007-11-13 23:02) [2]> [1] Anatoly Podgoretsky © (13.11.07 23:00)
> > Kostafey (13.11.2007 22:58:00) [0]
>
> Лучше всего через UPDATE
А как определить какие данные были вновь
внесены (т.е. дбавлены новые записи) и какие
только изменнены?
← →
Anatoly Podgoretsky © (2007-11-13 23:10) [3]> Kostafey (13.11.2007 23:02:02) [2]
Изучить T-SQL в части JOIN, INSERT, UPDATE и WHERE
Придется написать два независимых запроса.
← →
Anatoly Podgoretsky © (2007-11-13 23:11) [4]Другой вариант, а насколько некоторые изменения., может проще эти некоторые изменения сделать на копии 1, чем пытаться синхронизировать, думаю проще, особенно если заранее подготовить скрипт.
← →
Kostafey © (2007-11-13 23:18) [5]> [3] Anatoly Podgoretsky © (13.11.07 23:10)
> > Kostafey (13.11.2007 23:02:02) [2]
>
> Изучить T-SQL в части JOIN, INSERT, UPDATE и WHERE
Да вроде знаю я SQL немного.
Просто никогда не писал запрос
для 2-х БД одновременно (всегда
работал только с одной базой).
> Придется написать два независимых запроса.
Понял.
> [4] Anatoly Podgoretsky © (13.11.07 23:11)
> Другой вариант, а насколько некоторые изменения., может
> проще эти некоторые изменения сделать на копии 1, чем пытаться
> синхронизировать, думаю проще, особенно если заранее подготовить
> скрипт.
Да, я про это уже думал.
Я даже сначала так и хотел сделать, но
потом выяснилось что один злой пользователь
удалил некоторые данные из другой части оригинальной
БД. Ну да, еще есть бэкап, но у меня он не с собой.
Да и изменнения в структуре копии были такие,
что повторить их уже вряд ли получиться.
← →
Anatoly Podgoretsky © (2007-11-13 23:20) [6]> Kostafey (13.11.2007 23:18:05) [5]
db.owner.table
← →
Kostafey © (2007-11-13 23:30) [7]> db.owner.table
Дак я вроде так и пишу.
Вот простейший запрос:UPDATE Dor.dbo.POJ_POEZD
SET Dor.dbo.POJ_POEZD.Station = Dor_Last.dbo.POJ_POEZD.Station
Where Dor.dbo.POJ_POEZD.Cod_disl = 228
а он мне:
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "Dor_Last.dbo.POJ_POEZD.Station" could not be bound.
← →
Anatoly Podgoretsky © (2007-11-13 23:36) [8]> Kostafey (13.11.2007 23:30:07) [7]
Наверно надо алиас применить. И ты пропустил мои слова про JOIN
Кроме того советую подготовиться с вопросом и задать его на sqlru.microsoft-sql-server
Там есть очень опытные спецы по SQL Server
← →
Kostafey © (2007-11-14 00:08) [9]Во как извернулся :)
UPDATE Dor.dbo.POJ_POEZD
SET Dor.dbo.POJ_POEZD.Station =
(select Dor_Last.dbo.POJ_POEZD.Station
from Dor_Last.dbo.POJ_POEZD
where Dor_Last.dbo.POJ_POEZD.Cod_disl = 228
)
where Dor.dbo.POJ_POEZD.Cod_disl = 228
← →
Kostafey © (2007-11-14 00:14) [10]Для общего случая:
UPDATE Dor.dbo.POJ_POEZD
SET Dor.dbo.POJ_POEZD.Station=(
select Dor_Last.dbo.POJ_POEZD.Station
from Dor_Last.dbo.POJ_POEZD
where Dor_Last.dbo.POJ_POEZD.Cod_disl in (select Dor.dbo.POJ_POEZD.Cod_disl)
)
WHERE Dor.dbo.POJ_POEZD.Cod_disl in
(select Dor.dbo.POJ_POEZD.Cod_disl)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.05 c