Programing

SQL Server on Linux

現在、うちで開発している主力製品のサブシリーズのデータベースは、
Microsoft SQLServer Expressで動いているが、
クライアント兼サーバー(親子)としているので、
その機を不意に再起動してしまうと、全滅してしまう・・・

ということで、

別にサーバーを立ててくれとの要望があり、
単独でとなると、やはりそれなりの気を使う。

 

そもそも、親子で使っているのが間違っているんだが、
PC1台分のコストでも、下げてあげたい。
と思った訳だけど、

出来ることなら、別にして、せめて

  • RAID0でも組んだPC上に、(BIOS RAIDでもいい)
  • サーバーOSを載せた上で、

データベース・サーバーぐらいは、動かしたい!

***

ということで、サーバーOSにWindowsを選ぶと、
楽ちんだけど、お金がかかるので、
やっぱり、

帝王のLINUXの登場となる。

「SQL Server Linux」で検索してみると、
まさかと思ったけど、リリースしている。

Editions and supported features of SQL Server 2017 on Linux

SQL Server のエディションを選択します:
1) Evaluation (無料、製品使用権なし、期限 180 日間)
2) Developer (無料、製品使用権なし)
3) Express (無料)
4) Web (有料)
5) Standard (有料)
6) Enterprise (有料)

Expressもあり、無償みたいなので、
OS・DBサーバーともに、無料で使えそう。

※小規模のデータベースで、On Linuxなら、
Mysqlやpostgresqlでいいんだけど、
これまで、SQL Server で構築してきたノウハウがある分、
SQL Serverを選んでしまう。

 

古いPentium D機をRAID 0したやつが、どっかに転がっていたはずなので、
とりあえず、運用テストでもしてみることに。

 

Redhat Linuxは、サポートが有償のLinuxだけど、その派生?のCentOSを使うのが、安心そう。

レッドハットはRHELに含まれているソフトウェアのソースコードをオープンソースライセンスに基づき無償公開している。CentOSは、このソースコードをもとに、レッドハットの商標や商用パッケージ等を除去したものをリビルドしている。CentOSは、White Box Enterprise Linux、Scientific Linux等を含めて、一般に「RHELクローン」と呼ばれることもある。

参 >> CentOS @Wikipedia

続く。

PS.
Linuxの派生ツリー。
途中で消えたやつもあったり、まだ生きてるやつが居たり。

>> Linux ディストリビューション @Wikipedia

-

OLE制御(OpenOffice Calc vs. Ms Excel)

Microsoft Office(Excel)のライセンスが、ややこしいので、
OpenOffice(Calc)を検討。
※ライセンス問題については、後述

***

安牌を取るなら、既に出来上がっているExcelで良かったんだけど、
テストは?、ということ、これからの部分。

なので、Calcが登場するチャンスはまだあったわけで、

Excelで出来たことを、Calcで
どのように処理するか、を、まとめました。

OLE


Excelは、Delphiにコンポーネントがあるのと、
デモプログラムなんかで、割りとカンタンにOLE制御可。

Calcの唯一の資料は、
http://edn.embarcadero.com/jp/article/40857/images/40857/b5.pdf

Excel OLEでも同じだが、CalcをOLE制御するにあたり、
それ以降は、他の言語の解説を流用して、記述するしかない。
(言語毎の書き方が違うだけで、基本同じ)

非表示(パラメーターを指定して、ファイル読み込む)

 vP := VarArrayCreate([0, 0], varVariant);
 vP[0] := vOpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 vP[0].Name := 'Hidden'; // 非表示で起動
 vP[0].Value := true;

vStarDesktop.loadComponentFromURL('file:///' + xls_path, '_blank', 0, vP);

保存せずに終了(変更していない、ことにする)

vDoc.Modified := False;
vStarDesktop.terminate;

とか。

ExcelをCalcに移植


Calcは、

セルの指定が違う(左Excel/右Calc)
_設定!B1 >> _設定.B1

など、
一部変更が必要だったり、対応していない機能があるものの、

xlsのほとんど読み込める。

マクロは、ほとんど書き直す必要があるみたいだけど、
今回、マクロは多用していないが、

困ったことは、
Excelだとテキストボックスに「=B1」などと、
他のセルの値を指定できるのに対し、

Calsは出来ない・・・

テキストボックスをOLEで制御するしかないか?と、
いろいろ探したけど、見つからず。
途中で、テキストボックスの値を別のテキストボックスに書き出すサンプルを発見。

http://oooug.jp/faq/index.php?faq%2F5%2F20

ここに、デモがあったので、
DLして必要箇所を移植してみたけど、どうも動かず、

わかったことは、

フォーム・テキストボックスと
テキストボックスと、2種類ある!

デモでは、前者を使い、
Excelからの移植では、後者を使っていた。

 

プロパティーでセルの値を指定できたので、まず、1つ解決。

次に、印刷に反映できるか?、
だったけど、これも問題なく、基本的な移植が完了した!

そして残すは、

耐久テストだけ!

***

MsOfficeと、OpenOfficeのライセンス


ライセンス単位で、2つのPCにインストール出来るので、
3万円だとしても、1台あたり、半値で2台使える!

わけではなく、

ライセンス上、二人が使うことは出来ない。

※あくまで、サブ機にも入れていいよ、程度で、

2台に入れるのに、6万円は高いだろうという、配慮

 

多くの人が、無視して、二人で使っているだろうけど、
流石に、お客さんに推し進めることは出来ないため、

お客さんが、正当にお金を払ってくれればいいのですが、

どうせ、印刷するだけなので、
無駄でもあり、負担にもなります。

ということで、今回、ビジネスでも利用可能な

無料のOpenOfficeに移植した次第です。

参考 > OpenOfficeのライセンスについて

http://forest.watch.impress.co.jp/docs/serial/moritalk/536026.html

今回使ったのは、Apache OpenOfficeなので、Apache Licenseになり、
LibreOfficeは、GNU Lesser General Public Licenseとなり、

※共に、同じOpenOfficeの派生系

開発レベルでいうと、
いろいろと問題があるけど、

個人・団体利用、商用・非商用に関係なく
無償利用が許可されている。

が、寄付をさせて頂く予定。

http://www.openoffice.org/ja/

-