Linux での SQL Server データベースのバックアップと復元

適用対象:SQL Server - Linux

さまざまなオプションを使用して、SQL Server on Linux からデータベースのバックアップを作成できます。 Linux サーバーでは、sqlcmd を使用して SQL Server に接続してバックアップを作成できます。 Windows からは、SQL Server on Linux に接続して、ユーザー インターフェイスを使用してバックアップを作成できます。 バックアップ機能はプラットフォーム間で同じです。 たとえば、ローカル環境、リモート ドライブ、または Microsoft Azure Blob Storage にデータベースをバックアップできます。

重要

SQL Server on Linux により、ブロック BLOB を使用した Azure Blob Storage へのバックアップのみがサポートされています。 バックアップと復元にストレージ キーを使用すると、サポートされないページ BLOB が使用されてしまいます。 代わりに Shared Access Signature を使用します。 ブロック BLOB とページ BLOB の詳細については、「ブロック BLOB とページ BLOB へのバックアップ」のページを参照してください。

データベースをバックアップする

次の例では、sqlcmd がローカル SQL Server インスタンスに接続し、demodb というユーザー データベースの完全バックアップを作成します。

sqlcmd -S localhost -U SA -Q "BACKUP DATABASE [demodb] TO DISK = N'/var/opt/mssql/data/demodb.bak' WITH NOFORMAT, NOINIT, NAME = 'demodb-full', SKIP, NOREWIND, NOUNLOAD, STATS = 10"

コマンドを実行すると、SQL Server によってパスワードの入力が求められます。 パスワードを入力すると、バックアップの進行状況の結果がシェルから返されます。 次に例を示します。

Password:
10 percent processed.
21 percent processed.
32 percent processed.
40 percent processed.
51 percent processed.
61 percent processed.
72 percent processed.
80 percent processed.
91 percent processed.
Processed 296 pages for database 'demodb', file 'demodb' on file 1.
100 percent processed.
Processed 2 pages for database 'demodb', file 'demodb_log' on file 1.
BACKUP DATABASE successfully processed 298 pages in 0.064 seconds (36.376 MB/sec).

トランザクション ログをバックアップする

データベースが完全復旧モデルの場合は、さらに詳細な復元オプションのためにトランザクション ログ バックアップを作成することもできます。 次の例では、sqlcmd がローカル SQL Server インスタンスに接続し、トランザクション ログ バックアップを作成します。

sqlcmd -S localhost -U SA -Q "BACKUP LOG [demodb] TO DISK = N'/var/opt/mssql/data/demodb_LogBackup.bak' WITH NOFORMAT, NOINIT, NAME = N'demodb_LogBackup', NOSKIP, NOREWIND, NOUNLOAD, STATS = 5"

データベースを復元する

次の例では、sqlcmd が SQL Server のローカル インスタンスに接続し、demodb データベースを復元します。 ログ ファイル バックアップを追加で復元できるように NORECOVERY オプションを使用します。 追加のログ ファイルを復元する予定がない場合は、NORECOVERY オプションを削除します。

sqlcmd -S localhost -U SA -Q "RESTORE DATABASE [demodb] FROM DISK = N'/var/opt/mssql/data/demodb.bak' WITH FILE = 1, NOUNLOAD, REPLACE, NORECOVERY, STATS = 5"

ヒント

誤って NORECOVERY を使用したが、追加のログ ファイル バックアップがない場合は、パラメーターを付けずにコマンド RESTORE DATABASE demodb を実行します。 これによって復元が完了し、データベースは稼働したままになります。

トランザクション ログを復元する

次のコマンドによって、前のトランザクション ログ バックアップが復元されます。

sqlcmd -S localhost -U SA -Q "RESTORE LOG demodb FROM DISK = N'/var/opt/mssql/data/demodb_LogBackup.bak'"

SQL Server Management Studio (SSMS) を使用してバックアップおよび復元する

Windows コンピューターの SSMS を使用して、Linux データベースに接続し、ユーザー インターフェイスでバックアップを作成します。

Note

最新バージョンの SSMS を使用して SQL Server に接続します。 最新バージョンをダウンロードしてインストールする方法については、SSMS のダウンロードに関するページを参照してください。 SSMS の使用方法について詳しくは、「SSMS を使用して SQL Server on Linux を管理する」を参照してください。

次の手順では、SSMS を使用したバックアップの作成方法を説明します。

  1. SSMS を起動し、SQL Server on Linux インスタンスに接続します。

  2. オブジェクト エクスプローラーで、データベースを右クリックし、[タスク][バックアップ] の順に選択します。

  3. [Backup Up Database] (データベースのバックアップ) ダイアログで、パラメーターとオプションを確認し、[OK] を選択します。

SQL Server によってデータベースのバックアップが完了されます。

SQL Server Management Studio (SSMS) を使用して復元する

次の手順では、SSMS を使用してデータベースを復元する方法について説明します。

  1. SSMS で、[データベース] を右クリックし、[データベースの復元]を選択します。

  2. [データベース元] で、[デバイス:] を選択し、省略記号 [...] を選択します。

  3. データベース バックアップ ファイルを見つけたら、[OK] を選択します。

  4. [復元プラン] の下で、バックアップ ファイルと設定を確認します。 [OK] を選択します。

  5. SQL Server によってデータベースが復元されます。

SQL ドキュメントへの投稿

SQL コンテンツを自分で編集できることはご存じですか。 これにより、ドキュメントが改善されるだけでなく、ページの共同作成者としてもクレジットされます。

詳細については、「SQL Server のドキュメントに投稿する方法」を参照してください。