2016年9月4日日曜日

VB VS2013 と SQL Server Compact

SQL Server Compact は VS2010 (?) を最後に 今では サポートされていない状態 ですね。
基本的に、何とか、VS の構成を弄って無理やり組み込む事も可能なのでしょうが、
推奨外である事は忘れてはいけません。
でも、昔の資産を有効活用する為に、 基本的なデータ位は見れる様にして置くのも手かも知れません。


以前は Visual Basic 2008 SP1 Express を使っていましたので、
データをハンドリングする手段と言うと、 自前で全て書くか、 SQL Server Compact を利用するか、 でした。
その資産を、現行の VS で弄りたいとすると、
冒頭の SQL Server Compact 未サポート から、 別の手段を考えないと、 です。
通常は、 LocalDB のご登場と相成る のでしょうが、
それはさて置き、 以前の資産 を継承する事を模索しないと、ですね。
OS が Windows 10 に替わって、 
Visual Basic 2008 SP1 も SQL Server 2008 Express も 未サポート になってしまいました。
動く事は動くのですが、 ここでは、 VS2013 から何とかする 事を考えたいと思います。  VS2015 でも同じかと。.
既に書いてある プログラムの多少の手直しなら、 Win10 上で、Visual Basic 2008 SP1 を動かせば何とかなります。
  既に、非推奨の SQL Server Compact を、新しい Project に新規採用する事は無いでしょうから。.
でも、新しい技術を試したり、大幅な構成変更するなら、
データベースを作り替えないといけない そう言う結果に結び付きます。

UI としての プログラムは変わっても、 蓄積されたデータは 流用したいですから。
その為のデータベースですし。
とは言え、 1から全て書き直すのも考え物です。


そこで、
VS2013 Community (Update5) から、SQL Server Compact ( 以下、 sqlce と略 ) のスキーマとデータを取り出す方法を書きます。


先ずは、準備。
msdn SQL Server Comapct Forum (en-US) の MVP でいらっしゃる Mr. EricEJ のお書きになった、
SQL Server Compact/SQLite Toolbox
https://visualstudiogallery.msdn.microsoft.com/0e313dfd-be80-4afb-b5e9-6e74d369f7a1
Free の VS Add-In を導入します。
    Review で5つ星の優れたツールの評価です。
    2016/09/03 現在、verion は 4.5.0.2 (Isuue:2016/05/06) Size 2.6 MB です。

尚、未確認ですが、 Express Edition では この方法は 駄目 と言う記載も見た記憶がありますが、定かではありません。
でも、やはり、未サポートの様ですから、 ご注意を。 .


実際の導入に当たっては、
Visual Studio を開き、 TOOLS > Extensions and Updates... > Online > SerachBox に "SQL Server Compact/SQLite Toolbox" 。
そして、指示に従います。
 Visual Studio の TOOLS に SQL Server Compact/SQLite Toolbox が現れる筈です。
これをクリックして、 ポップアップを表示させます。
TitleBar の下 ToolBar にある ? のアイコン ( Tooltip 表示名 "About" )  をクリックして、
左下の Button " Register DDEX Providers" をクリックして、
指示に従い、 Visual Studio を再起動させます。

これで、準備は完了!。

再び、  Visual Studio の TOOLS から SQL Server Compact/SQLite Toolbox を表示させます。
Data Connections を右クリックして、
該当する sqlce の Version の  Add SQL Server Compact 4.0 (or3.5) Connection... をクリック、
Filename で Browse... Button を押し、 データベースファイルを選択すれば接続出来ます。


凄いですね !!!。


このまま、Compact Engine を使う方法も、勿論、あると思いますが
推奨外である事と、 余り、特殊な環境にしてしまいたくない との思惑もあります。
そして、 Visual Studio の進化の恩恵を受ける為に、 制限の少ない LocalDB に移行する方法もあります。
それには、 旧データの器を変える必要があります。
Old Wine in New Bottles ですね。

その考えの下、 
sqlce データベースから スキーマとデータ を吸い上げる手段を 現行の Visual Studio に持たせる と位置付けます。


さぁ、吸い上げです。

 
SQL Server Compact/SQLite Toolbox で接続した sqlce ファイル(.sdf) から、 SQL の Script として自動生成して貰います。

後は、 このファイルを元に、 SQL Server 本来のファイル(.mdf) を生成するもよし、
Etinity Framework の機能を使って、 Code First や Database First でお願いするもよし、  です。

勿論、 テーブル作成と言った、そんな面倒臭い方法は取らず、
別途、接続して置いた SQL Server 上の 新ファイル (.mdf) に、直接、 Migrate (移行) させる事も可能です。
新ファイルには、一切のテーブル定義は不要です。

スキーマは過去のプログラムの設計資料がしっかりしていれば、 それを参照すれば良いですが、
刻々と変わるデータは、実際に動いているファイルから、 Script で Insert 文を得られる強みはあります。

勿論、データベース構造を弄らずに済むのであれば、  Migrate で簡単に移行して おしまい の手段も選択出来ます。


個人的には、
以前のプログラム作成当時、 別の DB Engine へ移行(Migration)なんて考えて設計していませんでしたので、
CSV にデータを吐き出す機能等、 実装していません。
つまり、自分のプログラム内で閉じた データ を操作していた訳です。.

この Tool、 SQL Server Compact/SQLite Toolbox は有難い! ですね。

これが無ければ、 うわぁ~、まいったなぁ~ 的状況だった と思います。

いや、
UI 書き直し等は考えたく無い (面倒な事になるのが目に見えているから) と言った 状況だったかも知れません。
SQL Server Compact/SQLite Toolbox があるから、 新 UI を書き起こして見るか と言う発想を具体化出来る とも言えますね。.

    ... でも、 その お陰で、 また、新しい泥沼に嵌り掛けていますが ... 。  :) ... ふうっ。.



0 件のコメント:

コメントを投稿