データベースのバックアップ
データベースのバックアップは以下の手順で行うことができます。
- バックアップ作業を実行するために、SQLDMO.BackupClassクラスのインスタンスを生成します。
- バックアップ作業を行うサーバとの接続を確立するために、SQLDMO.SQLServerClassクラスのインスタンスを生成します。
- 作業対象となるSQL Serverに接続します。
- バックアップ作業を行いたいDBを指定する必要があります。また、バックアップの保存場所を指定します(今回はファイル形式で保存します)。
- バックアップの種類を指定します(今回はデータベース全体をバックアップするので、SQLDMOBackup_Databaseを指定しています。差分バックアップや、ログなども可能です)。
- SQLDMO.BackupClassクラスのSQLBackupメソッドを実行し、バックアップ作業を行います。
- バックアップ作業が完了したら、データベースとのコネクションを開放し、終了です。
SQLDMO.BackupClass backUp = new SQLDMO.BackupClass();
SQLDMO.SQLServerClass sqlServer = new SQLDMO.SQLServerClass();
sqlServer.Connect( "サーバ名称", "ログインユーザー名称", "パスワード" );
// バックアップの対象DB backUp.Database = "データベース名称"; // バックアップファイルの保存場所 backUp.Files = "バックアップファイル名称";
backUp.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
// バックアップ操作を実行する
backUp.SQLBackup( sqlServer );
sqlServer.DisConnect();
バックアップファイルからのリストア
逆にデータベースをリストアする手順です。
- リストア作業を実行するために、SQLDMO.RestoreClassクラスのインスタンスを生成します。
- リストア作業を行うサーバとの接続を確立するために、SQLDMO.SQLServerClassクラスのインスタンスを生成します。
- 作業対象となるSQL Serverに接続します。
- リストアの種類を指定します(今回はデータベースのリストアを選択しています。)
- リストア作業対象のDBを指定します。
- 既にDBが存在する場合、バックアップファイルの内容と置き換えるかどうかを設定します。
- リストアを行うバックアップファイルを指定します。
- ファイル数を設定します。
- SQLDMO.BackupClassクラスのSQLRestoreメソッドを実行し、リストア作業を行います。
- リストア作業が完了したら、データベースとのコネクションを開放し、終了です。
SQLDMO.RestoreClass restore = new SQLDMO.RestoreClass();
SQLDMO.SQLServerClass sqlServer = new SQLDMO.SQLServerClass();
sqlServer.Connect( "サーバ名称", "ログインユーザー名称", "パスワード" );
restore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
restore.Database = "DB名称";
restore.ReplaceDatabase = true;
restore.Files = @"C:\Data\BackUp\backup.bak";
restore.FileNumber = 1;
restore.SQLRestore( sqlServer );
sqlServer.DisConnect();
まとめ
以上のように、SQLDMOを利用することでSQL Serverを操作できます。今回は触れませんでしたが、Jobの取得などを行うこともできます。
しかし、残念ながらSQLDMOはSQL Serverの将来バージョンで削除されることが決定しています(Books Onlineで明記されています)。SQL Server 2005の場合、SQL Server Management Objects(SMO)を利用した方がよさそうです。
次回以降、機会があればSMOについても触れてみたいと思います。