ありがたいことに、無料で使わせて頂ける、SQLSERVER Express
SQL Server 2017 Express エディション
このエントリ レベルの無料のデータベースで、最大 10 GB サイズの小規模なデータ ドリブンの Web アプリケーションとモバイル アプリケーションを構築します。
10GBを、小規模というのだろうか?
1日~1500件の受注をしている物流システムを作っていたが、
10GBには達していなかったと思うので、
結構、使えるわけですよ。
フルバックアップファイルは、20GBとかになっていましたが。
※有償のSQLSERVER Standardを使用
おまけに、SQLSERVER Management Studio(SSMS)まで無料なので、
※データベースの操作をするソフト
使わない手はないわけで、
弥生会計も、このSQLSERVER Expressを使っています。
なにより、商用でも無償で使えるのがありがたいが、機能制限がされており、
- レプリケーション/ミラー(冗長性)
- ジョブ(スケジュール)
など、バックアップ系が全くダメだけど、
参 >> ここまで使えるSQL Server Express Edition @IT
外部のジョブ機能を使うなりして、なんとか凌ぐわけですが、
ダウンタイム最小に!ということで、
まず、
SQLSERVERを、GoogleDriveにバックアップ
直接、GoogleDriveにDATAと、BACKUPを作って、指定しようすると怒られるので、
- SQLSERVERを停止する。(ファイルのロックを解除する)
- \Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL以下にある、
DATA /Backupを、まるごとGoogle Driveにコピーする。 - Google Drive上のDATA/Backupのシンボリックリンクを、\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL に作る。
※大事なことは、Google Drive上にメインデータを置くことです。
シンボリックリンクは、コマンドプロンプトを、管理者モードで起動し、
CD \Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQLmklink /d DATA "\Users\ユーザー名\Google ドライブ\DATA"mklink /d Backup "\Users\ユーザー名\Google ドライブ\Backup"
を実行。
※ユーザー名のところだけ、書き換え
参 >> Windowsのシンボリックリンクとジャンクションとハードリンクの違い
- SQLSERVERを再開する
以上で、自動的に、ファイルがクラウド上にコピーされます。
※おそらく、SQLSERVERの停止時=Windowsの再起動時に、ファイルが保存され、起動時に、クラウドに反映されていると思います。
追記 >> 実際にやってみたら、ファイルがロックされていて、同期が出来ません!
SQLSERVER Expressの定期バックアップを作る
メインファイル以外にも、一般的なスケジュールによるバックアップもやっておきましょう。
Expressでは、ジョブが使えないので、代案として、
- Windowsのタスクでバックアップ
- 運用するソフト上で、タイマーを使ってバックアップ
いずれも、上記の設定で、Backupに保存すれば、自動的にクラウド上に保存されます。
例 >>
BACKUP DATABASE [TestDB] TO DISK = N'C:\backup\TestDB.bak' WITH NOFORMAT, NOINIT, NAME = N'TestDB-完全 データベース バックアップ', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO
参 >> SQL Server Expressで自動バックアップを作成する方法
SQLSERVER Express の冗長化
クラスタ・ミラーが使えないので、別のPCにSQLSERVERを用意しましょう。
追記 >> 上記の通り、コピーさせてくれないので、コールドスタンバイにバックアップから、復元してやるしか、方法はないようです。
同様にシンボリックリンクを作り、起動時に自動実行されないように、サービスを手動にしておきます。=コールドスタンバイ
PCが故障しないかぎり、眠ったままとなりますが、
万が一の時は、
サービスを起動し、最新のデータかどうかだけ確認し、
(足りない時は、バックアップから復元)問題なければ、データベースの接続先を変更
死んだPCから、データを抜く必要もないため、ダウンタイムは最小になるはずです。