使用 c# 和 SQL Server 备份附加的数据库文件 (.mdf)

本文关键字:数据库 文件 mdf SQL Server 备份 使用 | 更新日期: 2023-09-27 18:27:25

我试图在我的Winforms应用程序中创建数据库的备份。但它不起作用

这是我的代码:

cn.Open();
cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandText=@"BACKUP DATABASE Database1.mdf TO DISK = 'C:'db1.bak'";
dr = cmd.ExecuteReader();
dr.close();
cn.Close();

这里cn SqlConnection. cmd SqlCommanddr SqlDataReader。请给我一个解决方案。

使用 c# 和 SQL Server 备份附加的数据库文件 (.mdf)

为什么不能使用 SQL 服务器管理对象。

创建如下方法

using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
public void BackupDatabase(string databaseName, string userName, string password, string serverName, string destinationPath)
{
    //Define a Backup object variable.
    Backup sqlBackup = new Backup();
    //Specify the type of backup, the description, the name, and the database to be backed up.
    sqlBackup.Action = BackupActionType.Database;
    sqlBackup.BackupSetDescription = "BackUp of:" + databaseName + "on" + DateTime.Now.ToShortDateString();
    sqlBackup.BackupSetName = "FullBackUp";
    sqlBackup.Database = databaseName;
    //Declare a BackupDeviceItem
    BackupDeviceItem deviceItem = new BackupDeviceItem(destinationPath + "FullBackUp.bak", DeviceType.File);
    //Define Server connection
    ServerConnection connection = new ServerConnection(serverName, userName, password);
    //To Avoid TimeOut Exception
    Server sqlServer = new Server(connection);
    sqlServer.ConnectionContext.StatementTimeout = 60 * 60;
    Database db = sqlServer.Databases[databaseName];
    sqlBackup.Initialize = true;
    sqlBackup.Checksum = true;
    sqlBackup.ContinueAfterError = true;
    //Add the device to the Backup object.
    sqlBackup.Devices.Add(deviceItem);
    //Set the Incremental property to False to specify that this is a full database backup.
    sqlBackup.Incremental = false;
    sqlBackup.ExpirationDate = DateTime.Now.AddDays(3);
    //Specify that the log must be truncated after the backup is complete.
    sqlBackup.LogTruncation = BackupTruncateLogType.Truncate;
    sqlBackup.FormatMedia = false;
    //Run SqlBackup to perform the full database backup on the instance of SQL Server.
    sqlBackup.SqlBackup(sqlServer);
    //Remove the backup device from the Backup object.
    sqlBackup.Devices.Remove(deviceItem);
}

用于使用上面显示的那些命名空间。您必须添加这些命名空间的引用。为此——

转到您的应用程序,右键单击"引用"文件夹,然后选择"添加引用"。

现在转到"浏览"选项卡并浏览以下路径-"C:''Program Files''Microsoft SQL Server''100''SDK''Assemblies">

现在选择以下 dll

Microsoft.SqlServer.ConnectionInfo.dll ,Microsoft.SqlServer.Management.Sdk.Sfc.dll ,Microsoft.SqlServer.Smo.dll ,Microsoft.SqlServer.SmoExtended.dll ,Microsoft.SqlServer.SqlEnum.dll ,

注意:Dll的位置可能会根据MS SQL Server的版本而延迟,我不确定。