Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.172.115] |
|
Сообщ.
#1
,
|
|
|
Всем привет! У меня такой вопрос - есть 2 базы данных, в которых некоторые таблицы совпадают. Одна база находится на локальном компьютере, другая на сервере. На локальном компьютере есть база данных c более полной таблицей phone, нужно скопировать данные из этой таблицы и перенести их в точно такую же таблицу phone в базу данных, расположенную на сервере, то есть обновить ее, внести недостающие данные.
Для эксперимента я создал на локальном две маленькие базы, bd1 и bd2 с одинаковой таблицей phone и попытался перенести данные из bd2 в bd1: insert bd1.dbo.Phone select * from bd2.dbo.Phone Sql server 2008 выдал такую ошибку: Значение столбца идентификаторов в таблице "bd1.dbo.Phone" может указываться явно только при использовании списка столбцов и когда IDENTITY_INSERT установлен в ON. Кто чем может помочь? |
Сообщ.
#2
,
|
|
|
Видать есть поля с типом IDENTITY и они разные для одного и того же телефона.
1.Удалите записи в таблицы и вставьте новые, но есть риск нарушить целостность данных. 2.Добавлять только те телефоны которых нет в таблице приемнике. |
Сообщ.
#3
,
|
|
|
Цитата maxjuvefan @ попытался перенести данные из bd2 в bd1: insert bd1.dbo.Phone select * from bd2.dbo.Phone Попытайтесь сделать нормально, а не тяп-ляп - перечислите вставляемые поля в секции INSERT и выбираемые в секции SELECT, исключив IDENTITY поля, есссно. Это как минирмум. А по уму - используйте MERGE. |
Сообщ.
#4
,
|
|
|
Цитата Akina @ MERGE. Все забываю что она есть в MS тоже. |
Сообщ.
#5
,
|
|
|
Цитата maxjuvefan @ Всем привет! У меня такой вопрос - есть 2 базы данных, в которых некоторые таблицы совпадают. Одна база находится на локальном компьютере, другая на сервере. На локальном компьютере есть база данных c более полной таблицей phone, нужно скопировать данные из этой таблицы и перенести их в точно такую же таблицу phone в базу данных, расположенную на сервере, то есть обновить ее, внести недостающие данные. Для эксперимента я создал на локальном две маленькие базы, bd1 и bd2 с одинаковой таблицей phone и попытался перенести данные из bd2 в bd1: insert bd1.dbo.Phone select * from bd2.dbo.Phone Sql server 2008 выдал такую ошибку: Значение столбца идентификаторов в таблице "bd1.dbo.Phone" может указываться явно только при использовании списка столбцов и когда IDENTITY_INSERT установлен в ON. Кто чем может помочь? Про identity уже написали Следующая грабля будет нарушение целостности ключа (forin key) Наверняка "телефоны" не просто так добавлены, а связаны с какой-нибудь сущностью. И наверняка между ними есть forin key и с вероятностью 146% в разных базах у одной и той же "сущности" id разные. Так что запрос будет несколько ... хмм .. или совсем не несколько... сложнее Цитата Bas @ Цитата Akina @ MERGE. Все забываю что она есть в MS тоже. Некоторые и не знают, и потому аккуратно селекты пишут |
Сообщ.
#6
,
|
|
|
Цитата Павел Калугин @ запрос будет несколько ... хмм .. или совсем не несколько... сложнее Да пусть сперва хотя бы с несвязными данными разберётся в своей однотабличной модельке... |