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

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

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

  • Создание среды разработки или новой тестовой среды; а также
  • Репликация данных из производства обратно в тестирование или разработку.

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

6 ответов

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

Red Gate Sql Compare - для сравнения и репликации структуры

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

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

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

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

Если вы ищете инструменты сторонних производителей, SQL Compare от Red Gate - это здорово (полное раскрытие - я друг Red Gate).

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

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

В этом вопросе есть две части.

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

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

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

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

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

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

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

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

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

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

Эй, почему бы вам просто не попробовать "Мастер импорта и экспорта", включенный в SQL Server 2008 (Пуск -> Программы -> Microsoft SQL Server 2008 -> Мастер импорта и экспорта).

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

Другие вопросы по тегам