かなり基本的なものが欠けているに違いありません。
私はレガシー プロジェクトに取り組んでおり、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
しかし、データベースを見ると、まだ空です。そこには絶対に何もありません。私の 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が死んでいることに気付く前に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 テーブルさえありません。