適用対象:Linux 上の SQL Server
Linux上でSQL Serverデータベースのバックアップはさまざまな方法で可能です。 Linuxサーバーでは、sqlcmdを使ってSQL Serverに接続し、データベースをバックアップできます。 WindowsからはLinux上のSQL Server on Linuxに接続し、ユーザーインターフェースでデータベースをバックアップできます。 バックアップ機能はプラットフォーム間で同じです。 例えば、データベースをローカルにバックアップしたり、リモートドライブにバックアップしたり、SQL ServerでURLにバックアップしてAzure Blob Storageに使ったりできます。
Important
SQL Server on LinuxはブロックBLOBでAzure Blob Storageへのバックアップのみをサポートしています。 バックアップと復元にストレージキーを使うと、ページブロブが使われますが、これはサポートされていません。 代わりに共有アクセス署名(SAS)を使いましょう。 ブロック 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"
データベースを復元する
次の例では、sqlcmdSQL 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"
Tip
もし誤って 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コンピュータからはSQL Server Management Studio(SSMS)を使ってLinuxデータベースに接続し、ユーザーインターフェースを通じてバックアップを取ることができます。
Note
最新バージョンの SQL Server Management Studio (SSMS) をインストールします。 SSMS の使用方法の詳細については、「Windows で SQL Server Management Studio を使用して SQL Server on Linux を管理する」を参照してください。
次の手順では、SSMS を使用したバックアップの作成方法を説明します。
SSMS を起動し、SQL Server on Linux インスタンスに接続します。
オブジェクト エクスプローラーでデータベースを右クリックし、「タスク」を選択し、「バックアップ...」を選択します。
バックアップデータベースのダイアログでパラメータとオプションを確認し、「OK」を選択します。
SQL Server によってデータベースのバックアップが完了されます。
SQL Server Management Studio (SSMS) を使用して復元する
次の手順では、SSMS を使用してデータベースを復元する方法について説明します。
SSMSで 「データベース」 を右クリックし、「 データベースを復元...」を選択してください。
[データベース元] で、[デバイス:] を選択し、省略記号 [...] を選択します。
データベース バックアップ ファイルを見つけたら、[OK] を選択します。
[復元プラン] の下で、バックアップ ファイルと設定を確認します。 [OK] を選択.
SQL Server によってデータベースが復元されます。
関連するコンテンツ
- データベースの完全バックアップを作成する
- トランザクション ログをバックアップする
- BACKUP (Transact-SQL)
- Azure Blob Storage の URL への SQL Serve バックアップ
SQL ドキュメントへの投稿
SQL コンテンツを自分で編集できることはご存じですか。 これにより、ドキュメントが改善されるだけでなく、ページの共同作成者としてもクレジットされます。
詳細については、 Microsoft Learn ドキュメントの編集を参照してください。