-4

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です。SqlCommand_ dr_ SqlDataReader解決策を教えてください。

4

1 に答える 1

2

SQL Server 管理オブジェクトを使用できないのはなぜですか。

以下のようなメソッドを作成します

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、

注: MS SQL Server のバージョンによっては、DLL の場所が異なる可能性がありますが、私にはわかりません。

于 2013-08-13T12:24:10.493 に答える