0
SQL Server 2014データベースのバックアップと復元を行う簡単なアプリケーションがあります。ここでSQL Serverデータベースを復元する前にスキーマを比較する
は私のコードです:
今public void BackUp(BackUpManifest backUpManifest)
{
try
{
using (SqlConnection cnn = new SqlConnection(backUpManifest.ConnectionString))
{
cnn.Open();
ServerConnection sc = new ServerConnection(cnn);
Server sv = new Server(sc);
// Create backup device item for the backup
BackupDeviceItem bdi = new BackupDeviceItem(backUpManifest.SavedPath, DeviceType.File);
// Create the backup information
var bk = new Backup();
bk.Devices.Add(bdi);
bk.Action = BackupActionType.Database;
bk.BackupSetDescription = backUpManifest.SetDescription;
bk.BackupSetName = backUpManifest.Name;
bk.Database = cnn.Database;
bk.ExpirationDate = new DateTime(2007, 5, 1);
bk.LogTruncation = BackupTruncateLogType.Truncate;
// Run the backup
bk.SqlBackup(sv);
}
}
catch (Exception ex)
{
throw ex;
}
}
public void Restore(BackUpManifest backUpManifest)
{
try
{
using (SqlConnection cnn = new SqlConnection(backUpManifest.ConnectionString))
{
cnn.Open();
cnn.ChangeDatabase("master");
ServerConnection sc = new ServerConnection(cnn);
Server sv = new Server(sc);
sv.KillAllProcesses(backUpManifest.Name);
// Create backup device item for the backup
BackupDeviceItem bdi = new BackupDeviceItem(backUpManifest.SavedPath, DeviceType.File);
// Create the restore object
Restore resDB = new Restore();
resDB.Devices.Add(bdi);
resDB.NoRecovery = false;
resDB.ReplaceDatabase = true;
resDB.Database = backUpManifest.Name;
resDB.ReplaceDatabase = true;
// Restore the database
resDB.SqlRestore(sv);
}
}
catch(Exception ex)
{
throw ex;
}
}
私が持っている状況は、データベースが変更されている場合ということである - すなわち、列/テーブル/修正/編集追加、その後、私は、データベースを許可しませんリストア。
既存のデータベースのスキーマと、復元しようとしているデータベースのスキーマを比較できますか?
おかげで、あなたが実際にバックアップを復元することなく、DB構造にアクセスすることはできませんSQL Server環境で