2013-03-13 4 views
1

У меня есть две базы данных с точно такой же схемой. Я хочу экспортировать данные из одного и реплицировать его на другом. Я не хочу бросать и воссоздавать таблицы, просто зацикливать все данные в целевом db и заменить его на данные, экспортированные из исходной базы данных.Восстановить базу данных SQL ТОЛЬКО DATA

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

ответ

1

Для того, чтобы импортировать данные, Вы можете использовать SQL Server Import and Export Wizard. Мастер импорта и экспорта SQL Server может копировать данные в базу данных и из нее.

+0

Спасибо, я отдам его. – pfeds

0

Для этого вы можете использовать пакет SSIS, и есть продукты, которые сделают это за вас. Я использовал для него как конкретный продукт (SQL Data Compare by Red Gate), так и пару версий управления версиями (хотя для последнего, действительно, только для «статических» поисковых данных).

Даже эти параметры обычно выполняют только скрипты из INSERTS и т. Д. Для вас.

Вы конкретно используете слово «replicate»; вы смотрели в делать фактическую репликацию снимка между базами данных:

http://technet.microsoft.com/en-us/library/ms151734%28v=sql.105%29.aspx

Это тоже не совершенен за ваш вопрос, хотя, я боюсь.

У вас есть варианты, но, к сожалению, ни так просто, как просто делать RESTORE DATABASE

0

Я не уверен в SQL. Но вы можете использовать третье приложение, например php и т. Д. Для выполнения передачи данных. Кулак объединяет все данные из таблицы. Для каждого из данных в таблице выполните поиск в целевой таблице. Если целевая таблица содержит данные, которые совпадают с текущими исходными данными, выполните обновление. Еще, создайте новый. Возможно, что-то подобное в PHP:

$source = mysql_query("SELECT * FROM source_table"); 

while ($row = mysql_fetch_assoc($source)) { 
    $target = mysql_query("SELECT * FROM target_table WHERE id='" . $row["id"] . "'"); 
    $tr_row = mysql_num_rows($target); 

    if ($tr_row > 0) { 
     $result = mysql_query("UPDATE target_table SET name='" . $row["name"] . "' age='" . $row["age"] ."' WHERE id='" . $row["id"] . "'"); 
    } else if ($tr_row <= 0) { 
     $result = mysql_query("INSERT INTO target_table (name,age) VALUES ('" . $row["name"] . "','" . $row["age"] . "'"); 
    } 
} 

Это всего лишь образец кода в PHP и MySQL. Надеюсь, эта помощь. :)

+0

Интересная идея, спасибо. – pfeds

0

Если вы можете связать два сервера баз данных, вы можете сделать это из SSMS, используя INSERT с операторами SELECT.

Here - статья, которая более подробно описывает связанные серверы.

Смежные вопросы