#author("2020-02-19T12:47:57+00:00","default:admin","admin") #author("2020-06-09T05:50:25+00:00","default:admin","admin") -[[Sql Server Backup Academy:https://sqlbak.com/academy/]] -[[Backup Overview (SQL Server):https://docs.microsoft.com/ja-jp/sql/relational-databases/backup-restore/backup-overview-sql-server?view=sql-server-2017]] --[[データベースの完全バックアップ (SQL Server):https://docs.microsoft.com/ja-jp/sql/relational-databases/backup-restore/full-database-backups-sql-server?view=sql-server-2017]] --[[差分バックアップ (SQL Server):https://docs.microsoft.com/ja-jp/sql/relational-databases/backup-restore/differential-backups-sql-server?view=sql-server-2017]] --[[部分バックアップ (SQL Server):https://docs.microsoft.com/ja-jp/sql/relational-databases/backup-restore/partial-backups-sql-server?view=sql-server-2017]] -[[SQL Server のバックアップの種類:https://sql55.com/column/sql-server-backup-types.php]] -[[SQL Serverをバックアップする(障害直前まで復旧):https://sql-oracle.com/sqlserver/?p=1405]] -[[SQL Server: フル(完全)バックアップをとる方法:https://sql55.com/column/create-full-database-backup.php]] -[[ログバックアップと差分バックアップ:http://mtgsqlserver.blogspot.com/2013/02/blog-post_21.html]] -[[SQLServer:◆オンラインバックアップ:http://mtgsqlserver.blogspot.com/2013/02/blog-post_20.html]] -[[SQLServer2008 バックアップ/復元の方法:https://www.softel.co.jp/blogs/tech/archives/4159]] *操作 [#c11a14a5] -[[データベースのバックアップファイルを同じサーバーに別のデータベース名でリストアする (SQL Server Tips):https://www.ipentec.com/document/sql-server-restore-database-in-different-name-in-same-database-server]] -[[[SQL Server] データベースの論理名・論理ファイル名を変更 / Change Logical File Name:http://jp.innoya.com/Board/ViewTip.aspx?MenuID=4&Idx=299]] *復旧モデル [#l68b762e] -ログファイルをバックアップに活かす方式が、完全復旧モデルと一括ログ復旧モデル **完全復旧モデル [#qfd2af74] **一括ログ復旧モデル [#cb76e096] **単純復旧モデル [#h9fa7cbf] *コマンドによるバックアップ [#i308f401] -[[BACKUP (Transact-SQL):https://docs.microsoft.com/ja-jp/sql/t-sql/statements/backup-transact-sql?view=sql-server-2017]] -[[SQLserverの バックアップは平和なときにやりましょう!(完全バックアップ):https://you-1.tokyo/sqlserver_backup/]] -[[バックアップコマンド実行時に任意のファイル名で保存する - 日付を指定してバックアップ:https://www.projectgroup.info/tips/SQLServer/MSSQL_00000011.html]] -[[バックアップコマンド実行時に任意のファイル名で保存する - 曜日名を指定してバックアップ:https://www.projectgroup.info/tips/SQLServer/MSSQL_00000010.html]] -[[MS SQL Serverのパスワード付きバックアップ:http://kinshachi.ddo.jp/blog/comp/archives/000514.html]] **完全バックアップ(BACKUP DATABASE) [#w9bde240] -コマンドは「BACKUP DATABASE [DB名] TO DISK = N'[バックアップファイルのPATH]'」 -SQL Server のバックアップは、1つのバックアップファイルに複数のバックアップを入れることができる BACKUP DATABASE Test TO DISK = N'C:\temp\TestDB.bak' WITH INIT, COMPRESSION; **ログバックアップ(BACKUP LOG) [#g59d9973] -コマンドは「BACKUP LOG [DB名] TO DISK = N'[バックアップファイルのPATH]'」 -トランザクションログのみをバックアップ BACKUP LOG Test TO DISK = N'C:\temp\TestDB_log.bak' WITH INIT, COMPRESSION; **BACKUPコマンドのオプション [#v2b3c145] -[[Backup: FORMAT vs INIT:https://www.sqlservercentral.com/forums/topic/backup-format-vs-init]] -[[Database backup - Use case of FORMAT and INIT:https://dba.stackexchange.com/questions/219960/database-backup-use-case-of-format-and-init]] -オプション指定方法 WITH optionA, optionB, ... -デフォルト設定は NOINIT, NOSKIP, NOFORMAT ***EXPIREDATE, RETAINDAYS [#p996bdf5] -[[sql-server-古いバックアップを正しく破棄する方法は?:https://codeday.me/jp/qa/20190806/1387402.html]] -[[SQL SERVER – RETAINDAYS Does Not Delete Backup After x Days:https://blog.sqlauthority.com/2017/10/12/sql-server-retaindays-not-delete-backup-x-days/]] -注意点 --これらのオプションは SQL Server でのファイルの上書きを防ぐことのみを目的としている(仮に2日間と指定しても2日経過後にバックアップセットがファイルから消えるわけではない) --不要になったバックアップファイルはオペレーティングシステムから削除する -EXPIREDATE WITH EXPIREDATE = '2019-10-30' -RETAINDAYS WITH RETAINDAYS = 3 ***NOINIT/INIT [#ic61d014] -1つのバックアップファイルに、1つのバックアップのみを作成 -NOINIT ... バックアップメディア上の既存のバックアップセットに追加 -INIT ... バックアップ メディア上の既存のバックアップセットに上書き ***NOSKIP/SKIP [#k7b2e656] -NOSKIP ... 書きを許可する前に、メディア上のすべてのバックアップ セットの有効期限を確認する -SKIP ... バックアップ セットの有効期限と名前の確認を無効にする ***NOFORMAT/FORMAT [#ob29fb76] -NOFORMAT ... バックアップ操作において、このバックアップ操作に使用するメディア ボリューム上の既存のメディア ヘッダーとバックアップ セットを保持するように指定 -FORMAT ... 新しいメディア セットを作成するように指定 --FORMAT が指定されると、バックアップ操作において、バックアップ操作に使用されるすべてのメディア ボリューム上に、新しいメディア ヘッダーを書き込む --既存のメディア ヘッダーとバックアップ セットが上書きされるので、そのボリュームの既存のコンテンツは無効になる --FORMAT を指定することは SKIP を実行することを意味する(SKIP を明示的に指定する必要はない) ***COMPRESSION [#p59566b9] -圧縮 ***NO_TRUNCATE [#bae4b034] -ログ末尾をバックアップするとともに、ログを切り捨てない *コマンドによる復元 [#hc904fa2] -[[RESTORE ステートメント (Transact-SQL):https://docs.microsoft.com/ja-jp/sql/t-sql/statements/restore-statements-transact-sql?view=sql-server-2017]] -[[バックアップからのリストアによるリカバリ手順:https://blogs.msdn.microsoft.com/jpsql/2013/10/04/1959/]] -[[SQL Server 「データベースは使用中なので、排他アクセスを獲得できませんでした」 で復元の失敗時の対処方法:https://sql55.com/column/sql-server-restore-failed-database-in-use.php]] -[[SQL Server バックアップ コマンド (差分バックアップ):https://www.keicode.com/db/mssql02-differential-backup.php]] -[[メモ:SQLServerで異なる名前のDBへのRestore:http://kanariya0922.hatenablog.com/entry/2012/02/03/202903]] -RESTORE LOG ステートメントで WITH STOPAT、STOPATMARK、または STOPBEFOREMARK を指定して、バックアップ内の特定の時間またはトランザクションにログバックアップを復元できる -次の復元シナリオが実行可能 --完全データベース バックアップからデータベース全体を復元する (完全復元) --データベースの一部を復元する (部分復元) --特定のファイルまたはファイル グループをデータベースに復元する (ファイル復元) --特定のページをデータベースに復元する (ページ復元) --トランザクション ログをデータベースに復元する (トランザクション ログ復元) --データベース スナップショットでキャプチャされた時点にデータベースを戻す -オプション(WITH optionA, optionB, ...) --NORECOVERY ---まだリストアすべきバックアップがある場合に使用するオプション ---NORECOVERY を指定してリストアを行った場合は、データベースが「復旧中」(リストア中)となり、ユーザーからの接続を一切できないようにブロックする --RECOVERY ---リストア後にデータベースを完全復旧した状態にする ---リストアが完了したことの合図になり、残りのバックアップをリストアすることはできない -REPLACE ... 指定したデータベースと同じ名前のデータベースが既に存在している場合でも、データベースとその関連ファイルが作成される。その場合、既存のデータベースは削除される。 *バックアップセット [#b43b9a7a] -[[SQL SERVER2016 バックアップと復元でエラー(メディアファミリ、メディアセットの概念):http://mio-web.net/pcsupport/archives/399/]] *バックアップファイル [#d6429c9e] **ヘッダ情報 [#ccf6b4d8] -[[バックアップ テープまたはバックアップ ファイルの内容の表示 (SQL Server):https://docs.microsoft.com/ja-jp/sql/relational-databases/backup-restore/view-the-contents-of-a-backup-tape-or-file-sql-server?view=sql-server-2017]] -[[Understanding SQL Server Log Sequence Numbers for Backups:https://www.mssqltips.com/sqlservertip/3209/understanding-sql-server-log-sequence-numbers-for-backups/]] RESTORE HEADERONLY FROM DISK = N'C:\var\backup\DB\test001.bak' **LSN : Log Sequence Number [#oe3e902d] -[[Log Sequence Number:https://sqlbak.com/academy/log-sequence-number/]] -FirstLSN – Log sequence number of the first transaction in the backup set -LastLSN – Log sequence number of the next log record after the backup set -CheckpointLSN – Log sequence number of the last checkpoint -DatabaseBackupLSN – Log sequence number of the last full database backup