2013年2月24日日曜日

LocalDB (Microsoft SQL Server 2012 Express LocalDB )


最近しょっちゅう書いてます。数年ぶりに完全にソフト屋モード。

いまWCFを学習中です、そろそろソフトを売る予定なのでライセンス認証サーバー立ち上げないといけません。何故なら当然自腹で作るのでタダでCOPYされたらご飯が食べれなくなります。
しかしこの認証サーバーソフトと言うか仕組一式を買うと数百万@@、保守に年間数十万、完全ぼったくり?かどうかは分かりませんが、最初からそんな予算取るほどめでたくないので、自作すべく調査中です。

いつ立ち上がるのかは不明ですが・・・完成したら認証サーバーの仕組みも売らないとです。



ところで、Sqlserver、DBの話です。



Sqlserverは、MSDNのライセンス(サブスクリプション)持っていればSTDでもエンタープライズでもDLすれば良いだけですが、そうでない場合はSQL Server 20xx Express Editionを使うと思いますが(mySQL使う方もいるようですが、それって・・・)
これタダで運用でもリモートでも使えるので重宝しますが、このExpress Edition に LocalDBと言うのが出ているのですね。軽い版。

普通のExpressは上位完全互換なので規模が大きくインストールもSTDなどと同じで時間はかかるしあまりお手軽な気はしません。が、このLocalDBは数十秒でインストールできるかなりのお手軽版です。



実際にどこまで使えるのか良くわかりませんが、面白そうなのでこのページからDLしてインストールしてテーブルまで作成してみました。

細かい話は素晴らしい皆様が記事をUPされているのでお任せして、非常に雑な画像をUPします。

私的備忘録のようなものですが・・・。




※文字が小さいのでデスクトップに張り付けて拡大してみてくださいメ
Microsoft SQL Server 2012 Express LocalDB
Microsoft SQL Server 2012 Express LocalDB




< 試してみたこと (画像赤丸の詳細は下記の丸へ記述) >


0  DLしてインストール

  本体はここに入るようです。 C:\Program Files\Microsoft SQL Server\110\LocalDB\Binn
  インストールは特に問題なく数十秒で終了



① DOS窓からコマンドを打つ

  1.インスタンス作成(インストールされると作られるV11.0とは別のインスタンス作成)
  2.インスタンス情報表示、停止、削除



③ データベースの場所

  master、model、msdb、tempdbなどのシステムDBは、現在のユーザープロファイル下のフォルダに作成される
  C:\Users\ユーザー名\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\インスタンス名
  なんでこんなフォルダに入る?と疑問に思うが、あくまで小さいDBなのでユーザー単位に、と言う発想のよう



④ DBを作ってみる

  普通に作ると、C:\Users\ユーザー名、この中に出来てしまう
  なんでもバグがあるそうで(DB作成エラー)皆さんマイドキュメントなどに作っているようですが、それは嫌なのでCドライブにフォルダ作って入れました(インスタンス毎のサブフォルダ作るのを忘れましたが・・)
  特に問題なく作れます(②のManagement Studioで作成)



② 順番が前後しますが・・ SQL Server Management Studioでインスタンスに接続し、色々試す

  1.インスタンスへの接続は、ローカルと言う事もあり何の問題なく完了
     (localdb)\インスタンス名
  2.DBを作成してみる
    特にいくつでも作れそう
  3.テーブルを作成してデータを入れてみる
    特にいつもと変わらず作れる(STDやEXPRESSと同様)



◎ 最後にやったこと

 上記だけだと何のためにわざわざLocalDBをインストールして使うのか全く意味不明なため?(expressかdeveloperでいいじゃんか?)、画像にはありませんが、もう少し使ってみようとアタッチ・デタッチ試してみました。問題なく普通にできます。

 STDエディションの本番データ →デタッチ →ローカルへCOPY →LocalDBでアタッチ →問題なく開いて加工が可能、テーブル構造変更も普通に可
 逆も行いましたが特に問題なし LocalDBでデタッチ →本番でアタッチ


 いきなり本番DBを持ってくるのはどうかと思いますし、その持ってきたデータを加工し本番へアタッチするなど正気とは思えませんが、しかしどうやらそういうことを手軽に出来ることを売りにしている面もあるようです


< MSの説明 >

・Microsoft SQL Server 2012 Express LocalDB は、プログラムの開発者を対象とした SQL Server Express の実行モードです。
・LocalDB インストールによって、SQL Server データベース エンジンの開始に最低限必要なファイルがコピーされます。
LocalDB のインストール後に、開発者は特殊な接続文字列を使用して接続を開始します。 接続時に、必要な SQL Server インフラストラクチャが自動的に作成および開始されるため、複雑な、または時間のかかる構成タスクを行わなくてもアプリケーションでデータベースを使用できます。
開発者ツールによって、開発者は SQL Server データベース エンジンを使用して Transact-SQL コードを記述してテストすることができ、SQL Server の完全なサーバー インスタンスを管理する必要はありません。
http://msdn.microsoft.com/ja-jp/library/hh510202.aspx




私はコードも設計も要件もDBもマネジメントもコンサルも営業も運用も環境もPCもサーバーもネットワークも時にはケーブル・施工も!全てやるので特にDB周りが問題になったことはありませんが、普通は分業してソフト開発していると思うので、こういう軽いDBツールはありなのかな?と思いました。

ただインストールからしてあまりに手軽すぎるので、気軽にノートに入れてデータ持ち歩いてなくした!!!など心配な面もありますが、とても手軽です。

LocalDBならdeveloperEditionと違いパワーのないノートでも開発できそう♪
が、VSが重いのでやはりパワーのないノートでの開発は辛く嫌ですね。

仮に併用したとしても、接続先名も本番とLocalDBとでいちいち変更しないとならないし、そういう点でくだらないミスが発生する可能性あるので、やはり本番と同じエディションのSqlserver立ち上げ同一マシン名にするか別名を作って接続し開発するのが良さそうな気がします。もしくはdeveloperEditionで。

でもせっかくなので何か面白い使い方を考えてみますが・・・




(後日)

考えてみました。
商用ソフトのDBとしてバンドルし、客が使うDBとして使えたら嬉しい(ライセンス詳細は未調査のため現時点では考えない)
が、システムDB群がユーザプロファイルフォルダの中に出来るので、基本そのユーザーしか使えないかな?だとするとダメですね。逆に簡易セキュリティーにはなるけど。

SQLSERVERのExpress EditionはPCでやばいオペレーションすると結構危険で、やってしまうとほぼ100%PCをリカバリーしないとダメ。するとPCに保管してたエクセルやメールデータは全て飛ぶ!
だから客のPCにあまりインストールする気にならず=Expressは個人的には好きでない。

だからLocalDB使いたいのだけど・・・
※開発者の方が使う分には問題のオペレーションはほぼ100%発生しないと思われるので、心配しなくて大丈夫です(最近試してないので問題なくなってるのかも知れませんが?・・当たり前ですが試せないので・・不明)(詳細については質問しないでね。質問は無視しますので)

んー、、、また考えてみます。







0 件のコメント:

コメントを投稿