C# 备份或还原在mdf C上不起作用?
我正在尝试用C#中的C# 备份或还原在mdf C上不起作用?,c#,winforms,backup,restore,mdf,C#,Winforms,Backup,Restore,Mdf,我正在尝试用C#中的.MDF文件备份和恢复我的数据库。我认为它是备份,因为我看到了一个.BAK文件,但当我还原时,它不起作用。两者在运行时都没有错误,但我认为我的代码有问题。这是我的密码: public void BackupDatabase(String databaseName, String destinationPath) { ServerConnection connection = new ServerConnection(conn);
.MDF
文件备份和恢复我的数据库。我认为它是备份,因为我看到了一个.BAK
文件,但当我还原时,它不起作用。两者在运行时都没有错误,但我认为我的代码有问题。这是我的密码:
public void BackupDatabase(String databaseName, String destinationPath)
{
ServerConnection connection = new ServerConnection(conn);
Backup sqlBackup = new Backup();
sqlBackup.Action = BackupActionType.Database;
sqlBackup.BackupSetDescription = "ArchiveDataBase:" +
DateTime.Now.ToShortDateString();
sqlBackup.BackupSetName = "Archive";
sqlBackup.Database = databaseName;
BackupDeviceItem deviceItem = new BackupDeviceItem(destinationPath, DeviceType.File);
Server sqlServer = new Server(connection);
Database db = sqlServer.Databases[databaseName];
sqlBackup.Initialize = true;
sqlBackup.Checksum = true;
sqlBackup.ContinueAfterError = true;
sqlBackup.Devices.Add(deviceItem);
sqlBackup.Incremental = false;
sqlBackup.ExpirationDate = DateTime.Now.AddDays(3);
sqlBackup.LogTruncation = BackupTruncateLogType.Truncate;
sqlBackup.FormatMedia = false;
sqlBackup.SqlBackup(sqlServer);
}
public void RestoreDatabase(String databaseName, String filePath, String dataFilePath, String logFilePath)
{
ServerConnection connection = new ServerConnection(conn);
Restore sqlRestore = new Restore();
BackupDeviceItem deviceItem = new BackupDeviceItem(filePath, DeviceType.File);
sqlRestore.Devices.Add(deviceItem);
sqlRestore.Database = databaseName;
Server sqlServer = new Server(connection);
Database db = sqlServer.Databases[databaseName];
sqlRestore.Action = RestoreActionType.Database;
String dataFileLocation = dataFilePath + databaseName + ".mdf";
String logFileLocation = logFilePath + databaseName + "_Log.ldf";
db = sqlServer.Databases[databaseName];
RelocateFile rf = new RelocateFile(databaseName, dataFileLocation);
sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName, dataFileLocation));
sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName+"_log", logFileLocation));
sqlRestore.ReplaceDatabase = true;
sqlRestore.SqlRestore(sqlServer);
db = sqlServer.Databases[databaseName];
db.SetOnline();
sqlServer.Refresh();
}
private void backupToolStripMenuItem1_Click(object sender, EventArgs e)
{
saveFileDialogBackUp.FileName = fileName;// +".bak";
saveFileDialogBackUp.Filter = "Backup File (*.bak)|*.bak";
saveFileDialogBackUp.Title = "File Location";
saveFileDialogBackUp.InitialDirectory = AppDomain.CurrentDomain.BaseDirectory + @"Sauvegardes";
if (saveFileDialogBackUp.ShowDialog() == DialogResult.OK)
{
BackupDatabase("dbCPS", saveFileDialogBackUp.FileName);
MessageBox.Show("Backup Successful!", "CPS Backup", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void restoreToolStripMenuItem_Click(object sender, EventArgs e)
{
openFileDialogBackUp.Filter = "Backup File (*.bak)|*.bak";
openFileDialogBackUp.FileName = "CPS";
openFileDialogBackUp.InitialDirectory = AppDomain.CurrentDomain.BaseDirectory + @"Sauvegardes";
if (openFileDialogBackUp.ShowDialog() == DialogResult.OK)
{
RestoreDatabase("dbCPS", openFileDialogBackUp.FileName, openFileDialogBackUp.FileName, openFileDialogBackUp.FileName);
MessageBox.Show("Database Restored", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
您是否已在调试中逐步完成此步骤,以确保没有无声的错误消耗?事实上,它是否直接进入方法出口?是的。我放了一个messagebox,看看它是否成功,它是否成功。等等,我会编辑我的代码。你在调试器中完成了它吗?这怎么能指向一个有效的文件:String dataFileLocation=dataFilePath+databaseName+“.mdf”代码>?将所选文件的完整路径传递到这些变量中。请立即执行。现在我有一个错误。