高瀬システム工房の備忘録

思いついたら即メモ

SQLServer2008 R2 テーブルのバックアップとリストア

2013-06-28 16:04:25 | Weblog

SQLServerのデータベースのバックアップとリストアは時間がかかる特にリストアは時間がかかるので、テーブル単位でバックアップとリストアができないか調べた結果できることが分かったためメモ

必要なツール)
1: SQLServer Management Studio (DELETEコマンド実行用)
2: BCP(バックアップ及びリストア用)

手順)・・・以下の作業はSQLServerが動作しているホストで行うものと仮定する
1:  CMDを管理者として実行
2: 以下のコマンドを実行してテーブルのバックアップを取る

  D:\>BCP [DB名].dbo.[テーブル名] out d:\[テーブル名].txt -c -S  localhost -U sa -P [パスワード]

3: リストアが必要になるかもしれない作業を行う
4: SQLServer Management Studio(他のツールでも良い)で対象テーブルのレコードを全て削除する。
5:  CMDを管理者として実行
6:
以下のコマンドを実行してテーブルのリストアを行う

  D:\>BCP [DB名].dbo.[テーブル名] in d:\[テーブル名].txt -c -S  localhost -U sa -P [パスワード]

 

全テーブルバックアップしておき、必要なテーブルだけリストアできるとうれしいが、それはできなそう。

 

Firebird2.5

2013-06-03 09:28:11 | Weblog

8年近くFirebirdに触れていなかったが、Delphi + Firebird Ver1.0で作成したプロジェクトの修正が発生したため久しぶりに使ってみた。

ここ数年は、SQLServer Express Editionがメインのデータベースで、言語もC#がメインだったので、使い慣れたC#+SQLServerに変えようかとも思ったが、当時のSQLのスキルが低すぎて手直しに時間がかかりそうなので、今回の修正分だけC#に変更しFirebirdをVer1.0から Ver2.5に変更することにした。

ロースペックのマシンではSQLServerが使えるようになるまでに10分以上待たされるケースがあるが、Firebirdは、起動・バックアップ・リストアの全てが速いので慣れの問題を差し引いても開発効率アップが期待できる。 

8年前はFirebird=Delphiというイメージを持っていたが、Firebird .NET Providerが無料で使えるようになったのでFirebird=C#もありだな。 また、Delphi7ではUNICODEが使えないがC#だとFirebirdでUNICODEを使えるので社名や氏名に正しい文字が使用できるのでこのメリットも大きい。 正し、UTF8を使うとisqlで文字化けが発生するので注意が必要である。

http://www.firebirdsql.org/en/net-provider/

次にバージョン間のデータの互換性をテストしてみたが、残念ながらVer1.0(32Bit)とVer2.5(64Bit)では互換性がなさそうである。データベースファイルをコピーして旨くいくかと思ったがさすがに甘かった。 gbakでは "Invalid metadata detected. USE -FIX_FSS_METADATA option" というエラーが出るし何らかの変換作業が必要なようである。
ただし、これについてはFBExportというフリーのツールを使うと出来そうなのでトライしてみよう
FBExportのリンクは http://fbexport.sourceforge.net/fbexport.php
全てのテーブルに対してFBExportを実行すれば出来そうではあるが、テーブルが漏れる場合が心配なので、この方法は最終手段とする。
やはりバックアップファイル経由が間違いなさそうなので、バージョンを一気に上げずに試してみることにする。

 

Firebird Ver1.0ではSQLの基本機能が低く使いにくかったのと、gbakや大量のINSERTをisql経由で実行するとエラーで終わる場合があったためVer2.5では改善されていることを願う。

以下に忘れそうなFirebirdのコマンドを記述しておく

バックアップ例)
gbak -B -user "SYSDBA" -password "masterkey" "localhost:C:\Users\2\Documents\TEMP\ZIP.FDB" "E:\backup\ZIP.bak"

リストア例)
gbak -C -REP -user "SYSDBA" -password "masterkey" "E:\backup\ZIP.bak" "localhost:C:\Users\2\Documents\TEMP\ZIP.FDB"

メタデータのエクスポート例)
isql -x -u SYSDBA -p masterkey "localhost:C:\users\2\Documents\Temp\Zip.fdb"

パスワードの変更)
gsec  -user SYSDBA -pass OldPass -mo SYSDBA -pw NewPass