Какой самый эффективный способ дублировать экземпляр в SQL 2008?

14

У нас есть простой экземпляр базы данных с достаточным количеством данных в базах данных, чтобы сохранить его полезность, и мы можем использовать его в демонстрационных целях, и я хочу разместить его копию на своем ноутбуке, чтобы я мог использовать его для работы разработчиков, когда Я не в офисе. (Обычные экземпляры базы данных составляют около 150 ГБ, этот экземпляр - 3 ГБ)

Какой самый повторяемый / пригодный для сценариев метод восстановления экземпляра на моем ноутбуке? Я уверен, что мне придется снова запустить программу установки для SqlServer2008 и настроить экземпляр, но после этого ... Я думаю, что хочу иметь возможность удалять свои старые базы данных каждый месяц или около того и скопируйте все новые вещи на мой ноутбук, так как мой экземпляр не изменится ни на одной демонстрационной системе, ни на ноутбуке. Но сами базы данных будут обновляться, с обновлениями на sprocs и т.п.

Я подумал написать сценарий для всех «отбрасывать файлы базы данных; добавить файлы базы данных {путь}» и сохранить их в каком-нибудь исполняемом пакетном файле, а затем я могу «удалить, удалить, скопировать, добавить», но подумал, есть ли был лучший способ, чем просто xcopy и партия?

Я пытаюсь делать это по дешевке (не всегда ли мы стараемся делать что-то по дешевке), поэтому меня не особо интересуют продукты RedGate или тому подобное. Я хочу то, что я могу легко поддерживать в текстовом редакторе для себя.

Jcolebrand
источник
это один экземпляр базы данных или SQL Server с несколькими базами данных? Я предполагаю, что на вашем ноутбуке и компьютере разработчика установлен сервер sql, и у вас есть одна база данных, в этом случае вы можете использовать резервное копирование и восстановление. Резервное копирование машины разработки, копирование ее на ноутбук и восстановление, наоборот ... имеет ли это смысл?
CoderHawk
это SQL Server Express Edition? или стандартный? Служба SSIS является хорошим вариантом для подобных сценариев, к сожалению, она недоступна в версиях Express и Web.
CoderHawk
Извините, @Sandy ~ Это SQL Dev 2008. У меня есть доступ ко всему, что вы можете догадаться, благодаря MSDN.
Jcolebrand
Название вопроса немного сбивает с толку: «Какой самый эффективный способ дублировать | экземпляр | в SQL 2008?» - экземпляр или база данных?
CoderHawk
@Sandy ~ "Экземпляр" ... действительно, я хочу все это.
Jcolebrand

Ответы:

4

Вы ударили ноготь по голове: скопируйте файлы. Я использовал это для хорошего эффекта.

Я бы сказал, что вы должны определить «дешевый», чтобы включить затраты времени, чтобы подготовить решение, не включающее xcopy.

ГБН
источник
3

Хм, не уверен, поможет ли это, но мы используем набор сценариев, чтобы «очистить» производственную базу данных и подготовить ее к злоупотреблениям при разработке. Мы берем все большие таблицы, в которых есть столбец datetime, и мы перестраиваем таблицу с данными за последний год. Из полной базы данных около 200 ГБ мы получаем около 40 ГБ для разработки. В основном мы генерируем динамические сценарии для создания bcp-файлов для каждой таблицы, воссоздаем таблицу (включая любые связанные ограничения) и затем массово вставляем только данные за прошлый год.

Может быть, есть инструменты для этого, но наш магазин стоит дешево :-).

Мэриан
источник
Да, мы идем по пути BCP для многих вещей, поэтому я понимаю, что вы говорите, и урезание некоторых из них было бы хорошо, но у меня уже есть примерно 3 ГБ данных, которые мне нужны, поэтому я не очень Смотря, чтобы добавить больше там. Я просто хочу скопировать весь экземпляр и подумать, что есть способ продолжать делать это неоднократно. Но в остальном я думаю, что я нахожусь на том же пути, о котором вы говорите, только на малом сакле.
Jcolebrand
Так что повторяйте все шаги партиями :). SQL имеет пакетные параметры, и вы можете комбинировать пакетные файлы с sql-файлами и получить хороший пакет. Я создал специальный пакет Log Shipping (dumb), который работает на разных доменах, и вся подготовка базы данных выполняется в файлах cmd / sql. Вы можете создать именованный экземпляр только для вашего использования и там запустить / остановить службу, восстановить базу данных, очистить ее, подготовить, создать резервную копию и отправить в какую-то определенную папку. Может быть, некоторая работа может быть выполнена быстрее в powershell .. но я не знаком с этим.
Мариан
да это идея;)
jcolebrand
@jcolebrand - Может быть, поможет такой инструмент, как Norton Ghost или Clonezilla? Вам понадобится скопировать папки резервных копий prod куда-нибудь на игровую площадку, а затем сделать все самое интересное (восстановить ... три ... и т. Д.). Вам не нужно писать сценарий действий копирования, и вы будете обрабатывать только часть SQL :).
Marian
ооооо, это может быть полезно. Новые возможности рассмотрения.
Jcolebrand
0

Самый простой способ обновить схему в соответствии с этими системами - использовать такой инструмент, как Red Gate SQL Compare или Embarcadero DB Change Manager.

Существует множество других доступных инструментов, которые могут, вероятно, выполнить такое же сравнение схем и даже предоставить вам DDL для обновления схемы базы данных.

Параметры

  1. Используйте сторонний инструмент
  2. Резервное копирование и восстановление базы данных - вам может понадобиться восстановить промежуточный экземпляр для удаления данных (из-за нехватки места на ноутбуке)
  3. Напишите свой собственный скрипт базы данных, используя SMO, и просто создайте задание, которое создает сценарии для объектов, затем воссоздайте свою схему каждый месяц / раз, когда вам это нужно, а затем используйте SSIS для загрузки данных в новые объекты.
johndacostaa
источник
Как работает «Резервное копирование и восстановление базы данных» для экземпляра? Я хочу сохранить данные в этих таблицах, потому что это полный набор данных, только меньший, чем производственный.
Jcolebrand
SSIS, вероятно, позволит мне делать то, что мне нужно, но я недостаточно знаю об этом. Я должен расследовать дальше.
Jcolebrand
@jcolebrand - я предложил восстановить из резервной копии, просто подумав, как перенести данные из вашей действующей системы в вашу демонстрационную систему, когда вы делаете такие вещи, как добавление столбцов. Это, однако, имеет недостаток, требующий восстановления, а затем очистки данных перед повторным резервным копированием и восстановлением / отключением и присоединением.
johndacostaa