Я, должно быть, упускаю что-то довольно простое.
Я работаю над устаревшим проектом и пытаюсь
FluentMigrator в микс, потому что у меня есть интересная база данных
изменения и перенос данных, которые, как я думаю, будет сделано много
проще с помощью этого инструмента.
Для начальной миграции я просто хочу вывести базу данных на
текущая производственная версия, как есть. Чтобы упростить начальную миграцию,
Я написал в своей базе данных SQL Server 2008, и миграция выполняется
Скриптовые команды как серия команд SQL.
Чтобы проверить это, я создаю полностью пустую базу данных и пытаюсь запустить ее
из командной строки, используя это:
> migrate -a "C:\My\Project\Path\bin\debug\Rds.MyProjName.DBMigrations.dll"
-db SqlServer2008 -conn "Data Source=.\SQLEXPRESS2008;Initial Catalog=myNewDbName;
Integrated Security=SSPI" -version=20100901000000
Указанная версия является отметкой времени первого класса миграции
Атрибут миграции.
В командной строке все работает нормально - все
Скрипт увеличивается, и заканчивается:
-- CreateProductionDbCircaSep2010: migrated
Однако, когда я смотрю на базу данных, она все еще пуста.
Абсолютно ничего там нет. Метод My Up выглядит следующим образом:
public override void Up()
{
var cmds = LoadEmbeddedResources
.GetEmbeddedResource("scripted_db_2010-09-01.sql")
.AsString()
.ParseCommands();
foreach (var c in cmds) {
Execute.Sql(c);
}
CreateReferenceData();
}
(К вашему сведению, я анализирую скрипт, а не запускаю его как есть, потому что я
начал с использования Migrator.Net, прежде чем обнаружил, что он мертв, и это
был уже настроен.)
Кто-нибудь может мне помочь? Похоже, транзакция не
фиксация или какой-либо параметр командной строки, чтобы миграция выполняла
бег включен, но я его не вижу ...
РЕДАКТИРОВАТЬ: дополнительные вещи, которые я пробовал
Чтобы подтвердить, что строка подключения использовала базу данных, которую я ожидаю, я переименовал базу данных и впоследствии получил ошибку входа в систему, как и ожидалось.
Для дальнейших тестов я сократил длину скрипта и попытался выполнить его, используя
public override void Up()
{
Execute.Script(@"..\Resources\test.sql");
}
вместо команды за командой, но я получаю те же результаты. Вот результат этого теста (обратите внимание, я редактировал пути и т. Д.):
C:\My\Project\Path\FluentMigrator.Net\ >migrate -a "C:\My\Project\Path\bin\debug
\My.Project.DBMigrations.dll" -db SqlServer2008 -conn "Data Source=.\SQLEXPRESS2
008;Initial Catalog=myNewDbName;Integrated Security=SSPI" -version=2010090100000
0
Using Database SqlServer2008 and Connection String Data Source=.\SQLEXPRESS2008;
Initial Catalog=myNewDbName;Integrated Security=SSPI
-- VersionMigration: migrating ===============================================
-- CreateTable VersionInfo
-- VersionMigration: migrated
-- CreateProductionDbCircaSep2010: migrating =================================
-- ExecuteSqlScript C:\My\Project\Path\FluentMigrator.Net\..\Resources\test.sql
-- CreateProductionDbCircaSep2010: migrated
Пока нет таблиц в базе данных - нет даже ожидаемой таблицы VersionInfo.