LoginSignup
2
4

More than 5 years have passed since last update.

C#のSMOを使ってMicrosoft SQL Serverのバックアップを取る方法

Posted at

日本では情報が少なかったので、海外のフォーラムを参考に使えるところまでまとめました。
コメントはほぼ割愛。
この情報にたどり着いてる時点で、下記のサンプルだけあれば十分かと思います。
あとは自分のプログラムに合わせてソースを変えてください。

SMOとは
https://msdn.microsoft.com/ja-jp/library/ms162151.aspx

Backupクラスの説明
https://msdn.microsoft.com/ja-jp/library/microsoft.sqlserver.management.smo.backup.aspx

SqlBackup.cs
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;

//SQLの接続情報が入っているdll
using MySqlServerDatum;

public void SqlBackup(){
    try{
        //SQLへの接続情報
        MySqlServerDatum.Info info = new MySqlServerDatum.Info();
        SqlConnection sc = new SqlConnection(info.connectionString);
        Server s = new Server(new ServerConnection(sc));

        //ここの型への名前空間はあえてフルパスにしています。Backupでも動作しますが、念のため。
        Microsoft.SqlServer.Management.Smo.Backup b = new Microsoft.SqlServer.Management.Smo.Backup();
        b.Action = BackupActionType.Database;
        b.Database = info.databaseName;
        b.Incremental = false;
        b.Initialize = true;
        b.LogTruncation = BackupTruncateLogType.Truncate;

        //バックアップする場所を設定
        BackupDeviceItem backupItemDevice = new BackupDeviceItem("C:\\"+@"\"+info.databaseName+".bak", DeviceType.File);
        b.Devices.Add(backupItemDevice);
        b.SqlBackup(s);
    } catch(Exception ex){

    }
}
2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4