0

C#コードを使用して特定のデータベースのバックアップを作成したいので、次のコードを使用しています。

コード

       Console.WriteLine("Backup manager");

        Backup bkpDBFull = new Backup();

        bkpDBFull.Action = BackupActionType.Database;

        bkpDBFull.Database = "SampleDB";

        bkpDBFull.Devices.AddDevice(@"D:\Temp\Back\fulBak.bak", DeviceType.File);
        bkpDBFull.BackupSetName = "Database backup";
        bkpDBFull.BackupSetDescription = "Code backup";
        bkpDBFull.Initialize = false;

        bkpDBFull.PercentComplete += CompletionStatusInPercent;
        bkpDBFull.Complete += Backup_Completed;

        Server MyServer = new Server("Data Source=.;Initial Catalog=SampleDB;User ID=user;Password=pass");

        bkpDBFull.SqlBackup(MyServer);

2 つのイベントは次のとおりです。

CompletionStatusInPercent

    private static void CompletionStatusInPercent(object sender, PercentCompleteEventArgs args)
    {
        Console.Clear();
        Console.WriteLine("Percent completed: {0}%.", args.Percent);
    }

バックアップが完了しました

    private static void Backup_Completed(object sender, ServerMessageEventArgs args)
    {
        Console.WriteLine("Hurray...Backup completed.");
        Console.WriteLine(args.Error.Message);
    }

コード全体で、以下のコードで唯一の問題が発生します

問題コード

        Server MyServer = new Server("Data Source=.;Initial Catalog=SampleDB;User ID=user;Password=pass");

sqlserver の名前を間違った方法で入力したと思います。

この問題を解決するにはどうすればよいかの解決策が必要です。

4

2 に答える 2

2

コンストラクターを混同しました。new Server の引数は、サーバーの名前 (文字列)、またはMicrosoft.SqlServer.Management.Common.ServerConnection smo 名前空間内のクラスのインスタンスのいずれかです。コンストラクターは、接続文字列を引数として受け取ります。

于 2013-03-04T09:46:07.190 に答える
0

このように、トニー・ホプキンソン 私はさらに調査を行い、解決策を考え出しました...

次のコードで問題のあるコードを削除するだけです...

        SqlConnection con = new SqlConnection(@"Integrated Security=SSPI; Data Source=.");
        ServerConnection sc = new ServerConnection(con);
        Server MyServer = new Server(sc);

だから、これが他の多くの人に役立つことを願っています...

于 2013-03-04T09:59:36.020 に答える