Форум : Программное обеспечение

Название : Перенос БД SQL после переустановки системы

 ALX777 :

7.2.24 14:21
 Приветствую!
Была перенесена БД после переустановки Windows (бэкап, восстановление). Подтянутые приборы с архивами только в режиме чтения, никак нельзя настроить соединение и т.д., т.к. они "чужие".
После штудирования форума выяснилось, для полноценной работы нужно менять владельца по команде UPDATE ArchivistDevices set owner=<new_ID> where owner=<old_ID>.
Вот только загвоздка, старый CID уже узнать нет возможности.
Возможен ли вариант вытащить этот ID из бэкапа?

 xBocT :

7.2.24 21:07
 Да
Запрос
select distinct ID from ArchiVistDevices
выведет список всех идентификаторов машин которые делали записи в базу данных (если работа велась только с одной машины, то соответственно список будет из 1 го значения)
Ну а после как и было уже несколько раз тут описано, посмотреть идентификатор в текущей инсталляции Архивист (там он в 16тиричном значении представлен), и выполнить запрос
update ArchiVistDevices set ID=<значение>
Таким образом для всех записей в базе будет установлен идентификатор владельца, соответствующий текущему

 ALX777 :

8.2.24 10:03
 xBocT,
После выполнения команды выдает список машин:
select distinct ID from ArchiVistDevices
1566706670
1566707914
1567311962
1568529209
Текущая машина в Архивисте пишет CID 68A27424, в переводе в десятичную 1755477028.
1. При попытке установить идентификатор 1755477028 для всех предыдущих записей:
update ArchiVistDevices set ID=<1755477028>
выдает, что запрос завершен с ошибками:
«Сообщение 102, уровень 15, состояние 1, строка 1
Неправильный синтаксис около конструкции "<".»
2. При попытке заменить один из предыдущих ИД новым:
UPDATE ArchivistDevices set owner=<1755477028> where owner=<1568529209>
Выдает такую же ошибку. :-?

 xBocT :

9.2.24 09:52
 В запросе знаки "<" ">" НЕ надо указывать. В примере запроса эти знаки поставлены для выделения требуемых для подстановки значений.
Т.е. ваш запрос должен выглядеть так:
update ArchiVistDevices set ID=1755477028

 ALX777 :

9.2.24 10:12
 xBocT
При выполнении запроса update ArchiVistDevices set ID=1755477028 вылетает ошибка:
"Сообщение 2627, уровень 14, состояние 1, строка 1
Нарушено "PK__ArchiVis__1EF05B0CA16C72A4" ограничения PRIMARY KEY. Не удается вставить повторяющийся ключ в объект "dbo.ArchiVistDevices". Повторяющееся значение ключа: (877720206, 1755477028).
Выполнение данной инструкции было прервано."

 xBocT :

9.2.24 10:38
 Ох. Приношу свои извинения. Невнимательность .
В запросе надо не ключ ID, а OWNER указывать!

update ArchiVistDevices set OWNER=1755477028

 xBocT :

9.2.24 10:38
 Восстановите заново базу из бэкапа предварительно, и выполните вышеуказанный запрос

 ALX777 :

9.2.24 11:43
 xBocT
Благодарю душевно! Все заработало! :-)

Еще вопросик небольшой: возможно ли без больших ручных манипуляций объединить две БД Архивиста с разных усройств в одну? Или может есть источник по этой теме, где можно почитать об этом? Тут уже конечно чисто по среде SQL, но все источники которые пробовал смотреть ведут на зарубежные ресурсы, где с корявым переводом страшно даже что-то делать.

 xBocT :

9.2.24 11:54
 "Без больших ручных манипуляций" не обойтись.
В двух разных базах возможны (и вероятны, при условии ведения этих баз параллельно по времени) пересечения уникальных идентификаторов.

 ALX777 :

9.2.24 12:06
 xBocT
Понял, в принципе сильно не принципиально объединение. Главное основной вопрос помогли решить. Спасибо!

© NegaSoft co., 2005
http://www.teplovizor.ru

URL этой темы
http://www.teplovizor.ru/forum/viewtopic.php?topic_id=832&forum=2