MssqlTableMigrator
は、データベース間でテーブルを移行するためのクラスライブラリです。このライブラリは、SQL Serverデータベース間のテーブルマイグレーション, スキーマコピーをサポートします。
- データベース間でテーブル移行
- 同一データベースの場合も使用可能
- トランザクションによるデータ一貫性の確保
- 自動的なインデックスの再作成
NuGetパッケージとしてインストールできます。
dotnet add package MssqlTableMigrator
または、Package Manager Console
を使用してインストールします。
Install-Package MssqlTableMigrator
以下は、MssqlTableMigrator
を使用して異なるデータベース間でテーブルを移行する方法の簡単な例です。
他のサンプルについてはsamplecodesを参照してください
using MssqlTableMigrator;
class Program
{
static void Main(string[] args)
{
var sourceConnectionString = "SourceConnectionStringHere";
var destinationConnectionString = "DestinationConnectionStringHere";
using var manager = TableMigrationManagerFactory.Create.dualDBMigrationManager(sourceConnectionString, destinationConnectionString);
manager.Open();
try
{
manager.BeginTransaction();
var sourceTable = new TableIdentifier("SourceSchema", "SourceTableName");
var destinationTable = new TableIdentifier("DestinationSchema", "DestinationTableName");
bool result = manager.MigrateTable(sourceTable, destinationTable);
if (result)
{
manager.CommitTransaction();
Console.WriteLine("Migration succeeded.");
}
else
{
manager.RollbackTransaction();
Console.WriteLine("Migration failed.");
}
}
catch (Exception ex)
{
manager.RollbackTransaction();
Console.WriteLine($"An error occurred: {ex.Message}");
}
finally
{
manager.Close();
}
}
}
Open()
: ソースとデスティネーションの接続を開きます。Close()
: ソースとデスティネーションの接続を閉じます。BeginTransaction()
: デスティネーションのトランザクションを開始します。CommitTransaction()
: デスティネーションのトランザクションをコミットします。RollbackTransaction()
: デスティネーションのトランザクションをロールバックします。MigrateTable(TableIdentifier sourceTable, TableIdentifier destinationTable = null)
: テーブルを移行します。destinationTable
がnullの場合はsourceTable
と同じ値を使用します※DualDBTableMigrationManager
の場合のみSingleDBTableMigrationManager
ではエラーとなります。
CheckTableExists(TableIdentifer table)
: デスティネーションデータベースにテーブルが存在するかをチェックしますCopyTableSchema(TableIdentifier sourceTable, TableIdentifier destinationTable = null)
: テーブルのスキーマのみをコピーします。
SetDefaultConnectionStrings(source, destination)
: ソースとデスティネーションの接続文字列の規定値を設定します。DualDBTableMigrationManager
用ですSetDefaultConnectionString(source)
: 接続文字列の規定値を設定します。SingleDBTableMigrationManager
用です
DualDBTableMigrationManager(sourceConnectionString,destinationConnectionString)
:DualDBTableMigrationManager
インスタンスを作成します。DualDBTableMigrationManager()
:Configuration
クラスで設定した規定の設定を使用してDualDBTableMigrationManager
インスタンスを作成します。SingleDBTableMigrationManager(ConnectionString)
:SingleDBTableMigrationManager
インスタンスを作成します。SingleDBTableMigrationManager()
:Configuration
クラスで設定した規定の設定を使用してSingleDBTableMigrationManager
インスタンスを作成します。
このプロジェクトはMITライセンスの下でライセンスされています。詳細については、LICENSEファイルを参照してください。