Как вы заполняете свою базу данных статическими, контролируемыми источником данными, используя проект базы данных Visual Studio? Я пробовал все три стратегии ниже, нахожу, что каждый из них будет прогрессивно лучше, чем последний. Я использую, но не полностью удовлетворен стратегией 3. Есть ли у вас другая альтернатива?
-
Поместите скрипты вставки в папку "Data Generation Plans". Ссылка на сценарии в файле Script.PostDeployment.sql ", чтобы включить их в процесс развертывания.
- преимущество: прямолинейный
- недостаток: slooooooow
- недостаток: последующие развертывания должны сначала удалять статические данные или проверять отсутствие данных = > неэффективно -
Вставьте данные в базу данных в первый раз, используя любой метод, который наиболее удобен (например, может быть функцией таблицы SSMS). Извлеките эти данные с помощью утилиты командной строки bcp, чтобы создать кучу файлов данных и добавить их в свой проект. Создайте script, указанный в файле Scripts.PostDeployment.sql, который выполняет оператор "объемной вставки" для каждого файла данных.
- преимущество: намного быстрее, чем инструкции вставки
- преимущество: можно использовать функцию редактирования таблицы SSMS
- недостаток: каждый оператор объемной вставки требует полного файла имени файла для файла данных, поэтому, если файлы данных расположены на моем компьютере в папке "C:\Projects\Dev\Source\foo.dat", тогда удаленная машина-разработчик также должна имейте это в этом месте, или заявка на объемную вставку не выполняется
- недостаток: необходимо удалить существующие статические данные перед выполнением операторов массовой вставки при последующих развертываниях -
Создавайте временные таблицы во время развертывания для хранения статических данных и используйте оператор sql merge для синхронизации этих таблиц с целевыми таблицами. См. эти сообщения в блоге.
- преимущество: похоже, что sql merge имеет совершенную семантику для проблемы
- недостаток: логика для этой стратегии повторяется в каждом файле - недостаток: определения таблиц повторяются как временные таблицы в файлах слияния sql
Существует ли альтернативная стратегия? Я отказался от стратегии 1, потому что это было слишком медленно. Мне не нравится стратегия 2 из-за проблемы с полным именем файла. Я удовлетворен, но не в восторге от стратегии 3. Есть ли наилучшая практика?