石鹸箱 IV

VBA研究所に集まる方々の憩いの場です。みなさん自由にお使いください。
ここでは VBA の質問は厳禁。

4906 / 5126 ツリー ←次へ | 前へ→

【1886】SQL Server の簡易バックアップ 谷 誠之 06/6/5(月) 15:23
【1887】Re:SQL Server の簡易バックアップ 小僧 06/6/5(月) 19:21
【1888】Re:SQL Server の簡易バックアップ 谷 誠之 06/6/5(月) 20:41
【1889】Re:SQL Server の簡易バックアップ 小僧 06/6/6(火) 9:22

【1886】SQL Server の簡易バックアップ
 谷 誠之 E-MAIL  - 06/6/5(月) 15:23 -

引用なし
パスワード
   谷です。
ブログのように使うといいながら、Jaka さんと ichinose さんに先を越されてしまいました。でも、がんばるぞ。

しかし、自分でやったんですけど、ブログ的な使い方をするのに URL の書き込み禁止は、確かに辛いですなあ。(ごめんね、ichinoseさん)

さて今日はブログというよりも、備忘録。

勤務先のサーバー(Windows 2000 Server)に、GroupSpirit という名前の、無償のグループウエアを導入しました。
サポートがないかわりに、無償で使えるものです。確かイユーザ数制限もあったんじゃないかな。もっと本格的に使いたい場合やカスタマイズしたい場合は有償版を使うことになりますが、私の勤務先は無償版で十分です。

データベースは、MSから無償で提供されている MSDE(Microsoft SQL Server Desktop Engine)を使います。これは SQL Server の機能限定版という位置づけです。

いちおうすべてのセットアップが終わってから、「やっぱり、データベースは毎日バックアップをとりたいなぁ・・・無償で」と思い立ちました。
Windows 2000 には、XCOPY というコマンドでバックアップをとることができます。しかし、MSDE のサービスが動作していては、ファイルがロックされるのでコピーをとることができません。そこで、次のようなバッチファイルを作成しました。

 @echo off
 net stop mssqlserver
 xcopy c:\mssql\data\*.* \\server\share\groupspiritbackup\
 net start mssqlserver
 date /t >> C:\backupsql.log

net start/top コマンドは、サービスを動かしたりとめたりするコマンドです。
これでサービスを止めた後、c:\mssql\data\ 以下のすべてのファイルを別の共有フォルダにコピーし、ふたたびサービスを起動します。
最後の date コマンドは、バッチファイルがちゃんと動作したか確認するためのログ出しです。

ところで、Windows 2000 には at というコマンドがあります。コマンドを「あと」で実行するから at ・・・ ではなく、コマンドプロンプトで

at 4:00 /every:s,m,t,w,th,f,sa "C:\WINNT\SYSTEM32\CMD.EXE /C C:\BACKUPSQL.BAT"

と入力すると、毎日(/every:s,m,t,w,th,f,sa は、毎日/月/火/水/木/金/土)午前4時にこのバッチファイル(C:\BACKUPSQL.BAT)を実行しなさい、という意味になります。

標準機能でここまでできる、ということで・・・

【1887】Re:SQL Server の簡易バックアップ
 小僧  - 06/6/5(月) 19:21 -

引用なし
パスワード
   ▼谷 誠之 さん:
こんにちは。小僧と申します。

SQLServerも2005が発売となり、
従来のMSDEは ExpressEdition となり無償にて利用ができます。

管理ツールである「Management Studio Express」の日本語版も出ましたので
扱いがより易しくなった様に思われます。

例えばバックアップに関しても色々と条件
(バックアップ場所やフル/差分など)をGUIにて選択した後、
「スクリプト」ボタンにてSQL文を生成する事が可能です。

それをsqlcmd というコマンド
(SQLServer2000だとisqlコマンドというのでしょうか)
で起動するとバックアップが取れる様になります。

test1.bat の内容

@set SRV=<<ホスト名>>\<<サーバ名>>
@set DB=xxxxx
@set USER=sa
@set PWD=*****
sqlcmd -S %SRV% -U %USER% -P %PWD% -d %DB% -i Backup.sql >> test1.log

Backup.sqlの内容(自動生成)

BACKUP DATABASE [xxxxx] TO [保管場所], DISK = N'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\xxxxx.bak' WITH NOFORMAT, NOINIT, NAME = N'xxxxx-完全 データベース バックアップ', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO

吐き出されたログ

10 パーセント処理されました。
20 パーセント処理されました。
31 パーセント処理されました。
41 パーセント処理されました。
52 パーセント処理されました。
60 パーセント処理されました。
70 パーセント処理されました。
81 パーセント処理されました。
91 パーセント処理されました。
データベース 'xxxxx' の 304 ページ、ファイル 7 のファイル 'xxxxx_dat' を処理しました。
100 パーセント処理されました。
データベース 'xxxxx' の 1 ページ、ファイル 7 のファイル 'xxxxx_log' を処理しました。
BACKUP DATABASE により 305 ページが 0.623 秒間で正常に処理されました (4.010 MB/秒)。


有償の Workgroup Edition になるとジョブの管理機能が付いており
自動のバックアップ機能が組めるんですけどねぇ…。

自分はバッチファイルに関する知識が余りないので、
これをWindowsのタスクに管理させております(笑)

【1888】Re:SQL Server の簡易バックアップ
 谷 誠之 E-MAIL  - 06/6/5(月) 20:41 -

引用なし
パスワード
   小僧さん、こんにちは。谷です。

>管理ツールである「Management Studio Express」の日本語版も出ましたので
>扱いがより易しくなった様に思われます。

これは、名前だけ聞いたことがあります。
無償で使用できるのでしょうか。
このツールを使ったら、バックアップ用のバッチファイルが作れるのかな?
これだと、SQLを止めなくてもバックアップがとれそうですね。

【1889】Re:SQL Server の簡易バックアップ
 小僧  - 06/6/6(火) 9:22 -

引用なし
パスワード
   ▼谷 誠之 さん:
おはようございます。

>これは、名前だけ聞いたことがあります。
>無償で使用できるのでしょうか。

こちらも無償ですね。
VisualStudioでの開発ツール(?)などと一緒に
無料でダウンロードする事が可能です。


>このツールを使ったら、バックアップ用のバッチファイルが作れるのかな?

当方も使い込んでいる訳ではないので詳細までは解りませんが、
バッチファイルそのものが作れるのではなく
バックアップの為の命令ファイルが自動生成できるので、
バッチファイルからその命令ファイルを起動する様な仕掛けを作ってみました。


>これだと、SQLを止めなくてもバックアップがとれそうですね。

データファイル、ログファイルのコピーの場合は
2005においてもサーバの停止・起動は必要な様です。

SQL Server 2005 自習書シリーズ 管理編 No.5
バックアップ、リストア

を読んで学習中です(笑)

4906 / 5126 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
219927
(SS)C-BOARD v3.8 is Free