Назад | Перейти на главную страницу

Как лучше всего создать сценарии для выбранных таблиц и данных на SQL Server 2008?

SQL Server Management Studio может создавать сценарии. Проблема в том, что он разбивается на столбцы идентификаторов. На данный момент я не могу найти ссылку на эту ошибку, но Microsoft в основном объявила ее как «особенность».

Это особенно важно для:

Есть ли простое решение, которое действительно работает?

Эти два инструмента Red Gate очень хороши для сравнения различий между базами данных и написания сценариев структурных различий или различий данных.

Red Gate Sql Сравнить - для сравнения и тиражирования структуры

Сравнение данных Red Gate Sql - для сравнения и репликации данных

Они продают пакет SQL, который, я думаю, включает оба продукта.

Мы широко использовали их для настройки баз данных разработки, копирования изменений и так далее. Вы также можете использовать Data Compare one для синхронизации данных между базами данных.

Scriptio хорошо работал с SQL Server 2005 и принадлежит SQL Server MVP Биллу Грациано. Однако похоже, что вам придется подправить и перекомпилировать для SQL Server 2008.

Если вам нужны сторонние инструменты, Сравнение SQL Red Gate отлично (полное раскрытие - я Друг красных ворот).

Этот вопрос состоит из двух частей.

Во-первых, как вы копируете / перемещаете данные с полями идентификации?

Если вы собираетесь делать это регулярно между двумя или более серверами, вам необходимо настроить их исходные данные, чтобы они были разными. Например, если у вас есть два сервера, совместно использующие таблицу с небольшим количеством записей, вы можете настроить один с начальным значением идентификатора, равным 1, а другой - с начальным значением идентификатора, равным 1 000 000. Один сервер начнет свое поле идентификации с 1 и поднимется, а другой - с более высоким номером. Конечно, вам все равно нужно следить за этим, чтобы не допустить дублирования записей.

Затем, когда вы хотите скопировать данные с одного сервера на другой, вы префикс своих вставок с помощью команды SET IDENTITY_INSERT, как указано здесь:

http://msdn.microsoft.com/en-us/library/ms188059.aspx

Затем вы можете временно отключить поле идентификации, чтобы перекачивать данные с одного сервера на другой.

Во-вторых, как вы вообще копируете / перемещаете данные?

Есть несколько способов сделать это:

  • Репликация SQL Server - может автоматически синхронизировать данные между несколькими серверами. Он встроен в продукт и является гибким, но его сложно настроить и управлять. Это не для синхронизации сред разработки / тестирования, как вы ищете.
  • Создание сценариев с помощью SQL Server Management Studio - работает, но ему не хватает гибкости, и это тоже ручная боль в тылу.
  • Сравнение данных / схем со сторонними продуктами - такие инструменты, как Жаба для SQL Server сравнит схемы и данные между двумя серверами и синхронизирует их. (Отказ от ответственности: я работаю в Quest, создателях Toad.)

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

Я еще не изучил этот инструмент полностью, но взгляните на него. Это бесплатно, когда я его загрузил (я считаю, что он все еще есть)

http://www.ssmstoolspack.com/Features.aspx

Вы пробовали Microsoft Мастер публикации базы данных?
Отказ от ответственности: я использовал его только на SQL 2005 ... не знаю, работает ли он с SQL 2008.

Эй, почему бы вам просто не попробовать «Мастер импорта и экспорта», входящий в состав SQL Server 2008 (Пуск -> Программы -> Microsoft SQL Server 2008 -> Мастер импорта и экспорта).

При выборе таблиц не забудьте отредактировать сопоставления между исходной и конечной точкой и установить флажок «Включить вставку идентификатора». Это позволит вам сохранить внешние ключи вашей личности нетронутыми.