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