SQL Server 2008 データベースのバックアップ job
2つの方法についての備忘録
SQL Server エージェント job で実行
.bat を Windowsタスクスケジューラで実行
(メンテナンスプランでの設定は割愛)
SQL Server エージェント job の作成
"SQL Server Management Studio" を開く >
"オブジェクトエクスプローラ" で "SQL Server エージェント" を右クリック > 新規作成 > ジョブ
"新しいジョブ" ダイアログが開く
"全般" ページで、
名前 : 任意の名前を指定
有効 : チェックする
"ステップ" ページで、
[新規作成] > "新しいジョブステップ" ダイアログが開く
"全般" ページで
ステップ名 : 任意の名前を指定
種類 : オペレーティングシステム(CmdExec)
コマンド : 以下のコマンドを入力
sqlcmd -S [ServerName\MSSQLSERVER] -U [UserName] -P [Password]
-Q "BACKUP DATABASE [DatabaseName] TO DISK='[D:\BackupPath\DatabaseName.bak]' WITH INIT"
"詳細設定" ページで
"成功した場合のアクション" : "成功を報告してジョブを終了する"
"失敗した場合のアクション" : "失敗を報告してジョブを終了する"
"履歴にステップ出力を含める" : チェックする
[OK] > [OK]
"スケジュール" ページで
[新規作成] > ジョブを実行するスケジュールを設定する
[OK]
作成された job を右クリック > ステップでジョブを開始 として動作を確認する
上記コマンドで .sql ファイル を外だしにする場合
以下の内容の script.sql ファイルを作成する
BACKUP DATABASE [DatabaseName] TO DISK='[D:\BackupPath\DatabaseName.bak]' WITH INIT
Go
上記コマンドでは、以下のように .sql ファイルを指定
sqlcmd -S [ServerName\MSSQLSERVER] -U [UserName] -P [Password]
-i '[D:\ScriptPath\]script.sql'
.bat を作成し Windowsタスクスケジューラを設定
以下の内容で BackupSQL.bat ファイルを作成する
sqlcmd -S [ServerName\MSSQLSERVER] -U [UserName] -P [Password]
-Q "BACKUP DATABASE [DatabaseName] TO DISK='D:\BackupSQL\[DatabaseName.bak]' WITH INIT" > D:\BkupSQL\result.log
Windowsタスクスケジューラで、ジョブを実行するスケジュールを設定する
(Windows 2008 R2, SQL Server 2008 R2)
SQL server 2008 デタッチ、アタッチでデータベースを移行
移行元のサーバにて "SQL Server Management Studio" を開く >
"オブジェクトエクスプローラ" で 移行したいデータベースを右クリック > プロパティ >
"プロパティ" ダイアログが開く
"ファイル" ページで、.mdf ファイルのあるパスを確認して [キャンセル]
移行したいデータベースを右クリック > タスク > デタッチ
Windows Explorerで、確認したパスにある
データファイル(mdf、ndf)、ログ ファイル (ldf) を
移行先のサーバへコピー
通常は、移行元、移行先とも以下のような SQL server インスタンス配下になる
D:\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
移行先のサーバにて "SQL Server Management Studio" を開く >
"オブジェクトエクスプローラ" で "データベース" を右クリック > アタッチ
"データベースのアタッチ" ダイアログが開く
[追加] として、コピーしたファイルを選択して [OK]
デタッチした移行元のデータベースも再びタッチしておく
(Windows 2008 R2, SQL Server 2008 R2)
SQL server 2008 データベースへのアクセスを制限する(シングルユーザモードに移行)
"SQL Server Management Studio" を開く >
"オブジェクトエクスプローラ" で データベースを右クリック > プロパティ >
"プロパティ" ダイアログが開く
"オプション" ページで、
状態 > アクセスの制限 で、SINGLE_USER を選択し [OK] とする
(Windows Server 2008 R2, SQL Server 2008 R2)
SQL Server 2008 バックアップと復元(データベースのサーバ間移動)
データベースの完全バックアップ
"SQL Server Management Studio" を開く >
"オブジェクトエクスプローラ" で データベースを右クリック > タスク > バックアップ >
"データベースのバックアップ" が開く
"全般" ページで、
ソース
データベース : バックアップ対象データベースを選択
バックアップの種類 : "完全"
バックアップコンポーネント : "データベース"
バックアップセット
名前/説明 : 任意の名前/説明
バックアップセットの有効期限 : "期間指定" をチェックし、0 日とする
バックアップ先
"ディスク" を選択し、[追加] > (任意の)出力先ファイルを指定 > [OK]
"オプション" ページで、
メディアに上書きします
"既存のメディアセットにバックアップする" を選択し、以下の何れかを選択
"既存のバックアップセットに追加する"
-> 1つのファイルにバックアップが追記されていく
ファイルサイズがバックアップごとに大きくなる
復元時に、バックアップの復元ポイントを指定できる
"既存のすべてのバックアップセットを上書きする"
-> バックアップファイルが上書される
※ 手動時は、バックアプ先を明示的に指定するので、
こちらの選択がよい
[OK] でバックアップを実行する
データベースの復元
"オブジェクトエクスプローラ" で データベースを右クリック > タスク > 復元 > データベース >
"データベースの復元" が開く
"全般" ページで、
復元先
復元先データベース : 復元する先のデータベースを選択
※データベースのサーバ間移動などの目的で、既存データベースがなければ、
あらかじめ新規に作成しておく
復元用のソース
"デバイスから" を選択し、バックアップしたファイルを選択
"オプション" ページで、
復元オプション : "既存のデータベースを上書きする" をチェック
復旧状態 : "コミットされていないトランザクションをロールバックして、
データベースを使用可能な状態にする" をチェック
[OK] で復元を実行する
(Windows Server 2008 R2, SQL Server 2008 R2)