SQLServerのバックアップ

SQLServerのバックアップ

こんにちは

本日は、Microsoft SQLServerのバックアップの方法について紹介させていただきます。

Microsoft SQLServerは、様々なアプリケーションで利用されているMicrosoftの開発するデータベース(関係データベース管理システム:RDBMS)です。

SigmaNESTでも様々な情報の管理に利用されています。

日々蓄積される重要な情報を予期せぬ問題から守るためにバックアップが重要であることについては今更語る必要はないと思いますが、そのバックアップ方法については意外とご存じない方も多いのではないでしょうか?

参考にしていただくために以下に3つの方法を説明させていただきます。

 

1.バッチファイルとタスクスケジューラを利用する方法

SQLServer Expressという無償で利用できるエディションの場合、メンテナンスプランという自動バックアップを行う機能を利用することができません。そのような場合でも、以下の方法であれば自動バックアップをスケジュールすることができます。

 概要としては、バックアップを実行するSQLファイルSQLServerでさまざまな処理を指示するファイル)を作成し、それを実行するためのバッチファイルを作成します。実行するという流れとなります。

1 - SQLファイルの作成

SQLファイルは、メモ帳などで作成することもできますが、SQLServer Management Studioを利用することで簡単に作成できます。SQLServer Management Studio とは、SQLServerのさまざまな管理ツールを利用することのできるアプリケーションで、省略してSSMSと呼ばれたりもします。

 

以下のページでSQLServer Management Studioをダウンロードしてインストールを実行します。

https://docs.microsoft.com/ja-jp/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16

 

続いて、SQLServer Management Studioを起動します。

以下のようなログイン画面にご利用のSQLServerのサーバー名、ログイン名ユーザー、パスワードを入力して<接続>を選択します。

 

起動したら画面左のツリーから[データベース]の中の任意のデータベース名を選択し右クリックします。

表示されたポップアップの中から[タスク]-[バックアップ]を選択します。

 

続いて表示される下図の画面で<追加>を選択し任意のバックアップファイルの保存パス、ファイル名を設定します。

上記設定後、下図赤枠部の[スクリプト]を選択します。

ここでは、[スクリプト操作をファイルに保存]で直接SQLファイルとして出力します。

メモ帳などのテキストエディタで作成したSQLファイルの内容確認編集を行うこともできます。

構文や引数の詳細については、以下のページをご覧ください。

https://docs.microsoft.com/ja-jp/sql/t-sql/statements/backup-transact-sql?view=sql-server-ver16

2 - バッチファイルの作成

続いて上記手順で作成したSQLファイルを実行するためのバッチファイルを作成します。

メモ帳などのテキストエディタで以下の内容で入力します。

 

sqlcmd -Sサーバー名-U SQLServerのユーザー名-P SQLServerのパスワード-i実行するSQLファイルのフルパス>バックアップファイルのフルパス

 

以下は、例です。

sqlcmd -S localhost\SQLEXPRESS -U sa -P password -i D:\BACKUP\BACKUP.sql > D:\BACKUP\BACKUP.log

この内容だと、localhost\SQLEXPRESSというサーバー名にsaというユーザー名でログインし、D:\BACKUP\BACKUP.sqlを実行し、そのログファイルをD:\BACKUP\BACKUP.logに保存する。という内容となります。

 

引数の内容は、コマンドプロンプトで「SQLCMD /? 」を実行することで確認できます。

.bat」という名前で保存すればバッチファイルの作成は終了です。

バッチファイルを実行し動作を確認します。

 

3 - タスクスケジューラの設定

タスクスケジューラとは、Windows の機能で定期的な作業を自動化するために利用します。

以下の手順で、上記で作成したバッチファイルの実行のスケジュールを設定し自動化します。

Windowsの[スタートメニュー]-[コントロールパネル]-[管理ツール]-[タスクタイマー]で起動できます。

以下の方法ではより簡単に起動できます。 デスクトップ画面上でキーボードのWindows + R キーを同時に押します。

下図画面にtaskschd.mscと入力し<OK>を押すことで起動できます。

表示される下図の画面で[タスク基本の作成]を選択します。

下図の「名前」で作成するタスクの名前を設定し「次へ(N)>」を選択します。

タスクを実行するタイミングを設定します。

以下は、「毎日(D)」を選択した場合の画面です。

以下の設定では、毎日1:00にタスクを実行するという内容になります。

バッチファイルを実行したい場合は、次に表示される画面で「プログラムの開始(T)」を選択します。

下図の画面の「参照」で実行したいバッチファイルを選択します。

次の画面で<完了>を押すことでタスクの作成は完了です。

以上で、設定は終了となります。

4 - バックアップファイルからのリストア (復元)

作成されたバックアップファイルからの復元(リストア)は、以下の手順で実施します。

SQLServer Management Studioを起動します。

画面の左側のツリーからデータベースを右クリックして[データベースの復元]選択します。

下図の画面で「デバイス」を選択し、「・・・」でバックアップファイルを選択します。

「転送先」「データベース」で復元するするデータベースの名称を設定します。

<OK>を押すとリストアが実行されます。

※エラーが発生した場合は、Windowsのサービスで一度SQLServerを再起動してから上記の手順を実行してみてください。

2.BCPユーティリティを利用したバックアップ

以下で紹介する方法は、任意のテーブルのみのバックアップの方法です。

BCPユーティリティとは、SQLServerに登録された情報を任意のファイル形式で出力したり、入力したりすることができる機能です。

 

もし、重要な情報が特定のテーブルに集約されており日常的なバックアップは、任意のテーブルのみとしたいような場合には、BCPを利用した以下の手順でバックアップをすることができます。

1 - BCPを利用したテーブル情報の出力

コマンド プロンプトを起動します。

テーブル単位のバックアップは以下の構文で実行できます。

bcp名データベース.データベース名.テーブル名out出力ファイルフルパス/Sサーバー名/T /c /t区切り文字

以下は、例です。

bcp SNDBase.dbo.material out D:\material.txt -S localhost\SQLEXPRESS -T -c -t 、

この場合、localhost\SQLEXPRESSというサーバーSNDBaseというデータベースmaterialというテーブルをD:\material.txtというファイル名で出力しカラムごとの区切り文字を「,(カンマ)とするコマンドということになります。

引数-tを省略するとタブで区切られます。

引数の詳細については、以下のページをご覧ください。

https://docs.microsoft.com/ja-jp/sql/tools/bcp-utility?view=sql-server-ver16

 

この内容をバッチファイルとして保存し実行することもできるので、上記のタスクスケジュールで自動実行することも可能です。

2 - BCPを利用したテーブル情報の入力

※入力する場合は、入力するテーブル内のレコードが存在しない状態にする必要があります。

入力するときは、以下の構文で実行できます。

bcp データベース名.名前名.テーブル名 in 入力するファイルのフルパス -S サーバー名 /T /c /t区切り文字

以下は、例です。

D:\material.txt の bcp SNDBase.dbo.material -S localhost\SQLEXPRESS -T -c -t 、

この場合、localhost\SQLEXPRESSというサーバーのSNDBaseというデータベースのmaterialというテーブルにD:\material.txtの情報を入力するコマンドになります。

3.メンテナンス スケジュールを利用したスケジュールバックアップ

※この方法は、SQLServer Expressという無償で利用できるエディションでは利用できません。

SQLServer Standardなどのエディションをご利用であれば以下の方法を利用できます。

手順は以下の通りです。

1 - SQLServer Management Studioの起動

以下のページでSQLServer Management Studioをダウンロードしてインストールを実行します。

https://docs.microsoft.com/ja-jp/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16

 

インストールできたらSQLServer Management Studioを起動します。

以下のようなログイン画面にご利用のSQLServerのサーバー名、ログイン名ユーザー、パスワードを入力して<接続>を選択します。

2 - SQLServer Agentの起動

スケジュール バックアップを設定/実行するためには、SQLServer Agentと呼ばれるサービスを開始する必要があります。このサービスは、SQLServer Management Studioから実行できます。

SQLServer Management Studioの画面左のツリーから「SQLServerエージェント・・・」という項目を確認します。この項目に下図のように赤い×のアイコンが表示され「・・・が無効」と表示されている場合は、サービスが停止している状態です。

その場合は、この項目の上で右クリックし[開始]を実行します。

開始されると下図のように表示されます。

3 - メンテナンス スケジュールの設定

画面左のツリーから[管理]-[メンテナンスプラン]選択します。

右クリックで選択し、表示されるポップアップから[メンテナンスウィザード]を選択します。

下図の画面で[次へ(N)>]を選択します。

下図の画面の「名前(M)」で作成するメンテナンスプランの名前を設定できます。

<変更>ボタンを選択します。

 

※上図のように表示が崩れる場合があります。

 

表示される[新しいジョブスケジュール]で実行するスケジュールを設定します。

下図の設定の場合、毎日1:00処理を実行するという設定です。

設定が完了したら[OK]を選択します。

続けて[メンテナンスウィザード][次へ(N)]を選択します。

続いて表示される画面で実行される処理を選択します。

任意のチェックボックスを有効にして[次へ(N)]を選択します。

下図の画面で[次へ(N)]を選択します。

次に表示される下図の画面で[全般]タブの設定を行います。

ドロップダウンリスト「データベース」でバックアップするデータベースを選択します。

続いて[バックアップ先]タブでバックアップしたファイルの保存パスを設定します。

下図の「・・・」をクリックすることでバックアップするファイルパスを設定できます。

※下図の設定の場合、上記で選択したデータベース毎に「データベース名_backup____時分秒_・・・.bak」という名前バックアップがファイル作成されます。

続いて[オプション]タブを開きます。

バックアップを圧縮する場合は、「バックアップの圧縮設定(M)」設定を確認/変更します。

以上、設定を行ったら[次へ(N)]を選択します。

 

下図の画面でレポートの出力設定を行います[次へ(N)]を選択します。

下図の画面で設定を確認し、[完了(F)]を選択します。

作成されたメンテナンスプランは、下図のように表示されます。

設定は、以上で終了です。

以下の操作で設定したメンテナンスプランを実行することができます。

シグマネスト

お問合わせ・無料相談

SigmaNESTに関するお問合わせはこちら

Takehito Iizuka

新潟県生まれです。シグマテックでは6年目で技術チームとしてお客様への導入支援、カスタマイズの開発やサポートなどを担当しています。音楽と釣りが好きです。車の運転が苦手です。