SQLSERVER

Firebirdのテーブル・カラムに日本語が使えない難と、SQLSERVER LocalDBの発見!

インストール不要のDBサーバーを試してみました。

SQLite

DLLを置けば、使えますね。

新しいDelphiだとFireDACで、SQLiteに接続ができるようですが、
手持ちの最新は、XE5。

オープンソースのコンポーネントを使って、
試してみましたが、inner join 程度のレベルなんですが、
いいコンポーネントがなかったというのが、

MS ACCESS

ADOで接続できるので、期待したのですが、
テーブル同士の結合がとても面倒だったので、断念。

 

で、今回の本命

Firebird

Delphiの初期の頃に付属していたInterbaseから派生した
オープンソースのRDBS「Firebird」ですが、

もともとDelphiと親和性が高いため、コンポーネントも標準でついており、
期待感はとても高かったのですが、

Firebird 日本語 カラム名

日本語カラム(テーブル名も)が指定できません・・・

そういえば、昔Interbaseを使っていたときは、
アルファベットでテーブルを作っていました。

当時は、マルチバイトの対応がまだまだだったので、
そんなもんだと、諦めていましたが、
今では、ほとんどのRDBSで、日本語テーブル・カラムが使えるのに・・・

まさか、新しいFirebirdで日本語が使えないとは、とても思いませんでした!

でも、多くのDBエンジニアは、英語名でカラムを作ってるんですね。

https://thinkit.co.jp/free/tech/31/3

その比率も、

オラクル関連とマイクロソフト関連の両方のカンファレンスで講演する機会があったのですが、Oracle技術者主体だと9対1で日本語を利用しない方が圧倒的に多かったのですが、SQL Server技術者主体だと5対5といった結果でした。

私は、英語だと、列名が長くなりすぎるので、絶対に日本語派!

 

最後に、Firebird Embedded Serverを使うため調査履歴


ということで、
たかだかこの程度のことに、使いたくはなかったのですが、
親に使っていたSQLSERVER Expressを各クライアントにインストール・・・

と思ったところ、

SQLSERVER エディション

サービスとしてではなくアプリケーションのプロセス内で実行される SQL Server Express の軽量展開オプションである SQL Server Express LocalDB を使って、小規模なデータベースを基本的なデスクトップ アプリケーションやデスクトップ ツールに構築することができます。

https://www.microsoft.com/ja-jp/sql-server/sql-server-editions-express

 

ということで、

SQL SERVER EXPRESS Local DB!!!

https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/sql-server-2016-express-localdb?view=sql-server-2017

※英語のみ

Install LocalDB through the installation wizard or by using the SqlLocalDB.msi program. LocalDB is an option when installing SQL Server 2016 Express.

最新のSQLSERVER Expressは、2017ですが、リンク先は、2016。
オプションとしてLocalDBがあるようですが、
たどっていくと、2017をインストールするしかないようです。

まあ、とりあえず、SQLSERVER Express 2017をダウンロードして、実行。

「メディアのダウンロード」を押すと、「LocalDB」がありました!

参考 >> https://www.ipentec.com/document/sql-server-2017-express-local-db-install

※このLocalDBの機能は、もっと古いエディション2012から、既にあったんですね!知りませんでした!

インスタンスの作成と起動

sqllocaldb.exeを使って、インスタンスを作り、
インスタンスを指定して、起動するわけですね。

sqlserver express localdb インスタンス作成

※黒塗りのところが、「データベース名」となります。

SQLServer Expressとの違いは、サービスとしてではなく、
アプリケーションとして、起動させること。

スタートアップから、起動させる感じで。

 

SQLSERVER Manage Studioに接続

参考 > https://blog.engineer-memo.com/2012/12/16/sql-server-localdb-にデータベースを接続/

SQLSERVER Management Studio に接続

上記で、作成したインスタンスを指定で、Windows認証で接続します。

(localdb)¥インスタンス名

で、SQLSERVER Expressでバックアップしたものを、
localDBに復元させたのですが、いとも簡単に・・・

 

Delphiからの接続

FireDACなど最新品を持ち合わせていないので、TADOConecctionで接続します。

Delphi TAdoConecttion SQLServer LocalDB

いつもは、「Microsoft OLE DB Provider for SQL Server」でつないでいましたが、
今回は、「SQL Server Native Client 11.0」を指定します。

理由は、ここにそう書いてあったのでw

http://linyi-zatta.blogspot.com/2013/02/localdb.html

はい、続いて、SSMSと同様に。

Delphi TAdoConecttion SQLServer LocalDB

以上です。

コンパイルして、実行してみると、変更するコード・SQLは一切なく、
スタンドアローンで、動いてくれるように!

 

あとは、集計時に、AWS RDSに吸い上げるロジックを作れば、完成ですが、
SQLをまったく変更する必要がなかったことで、
ずいぶん時間を節約することが出来ました!

 

ほんと、ExpressやSSMS、無料で商用に使わせてもらえる
SQLSERVER様 素晴らしい限りですね!

経緯

SQLServerを入れた親にも、忙しいときには、
作業が出来るように、アプリを入れているんですが、
不具合が起きると、他の正常なPCで作業ができなくなるため、
再起動出来ないという、罠にハマってしまい、

この対策のために、対策することになりました。

AWS RDSにSQLSERVER Expressがあり、
これを親として使おうと思ったわけですが、

インターネットに接続必須というが出来てしまい、

接続時にちょっと時間がかかる程度で、
データの読み込みは、クラウドであるとはわからないほどの、
使用感なのですが、インターネットが切れると動かないという状況を
考慮すると、やっぱり各クライアントにDBシステムが必要だなと、
ということで、軽いDBを探しました。

 

-

CentOS インストール実機 x SQLSERVER on Linux

オフィスの中に転がっているPCに、CentOSを入れようとしたが、
起動しなかったりと、面倒なので、
省スペース型PCに、インストールしてみることに。

 

ヤフオクで探してみると、HPのThin Clientが安売りされている。

https://page.auctions.yahoo.co.jp/jp/auction/l417363451

2010年ごろに発売された機体で、CPU1GHzと弱小だが、
Linuxを入れるには十分なスペック(だと思う)

※シンクライアント (Thin client) とは、ユーザーが使うクライアント端末に必要最小限の処理をさせ、ほとんどの処理をサーバ側に集中させたシステムアーキテクチャ全般のことを言う。

>> Thin Client @Wikipedia 

フラッシュメモリー(小容量のSSD)にWindowsが入っているが、
IDE HDDに交換して使える様子。
※普通の44pinのIDEケーブルのようだが、MB側オス/フラッシュメモリー側メスと反対になっているようで、変換ケーブルが要るらしい。(普通のIDEの仕様は、MB側メス/HDDメス)
>> 変換名人 2.5″IDE HDD接続ケーブル 44ピンIDE(メス-メス) IDE-44BB @Amazon

http://speedhelp.net/Bilder/ThinClient/HP/hp_t5730_new_5.jpg

オフィスに転がっている使わなくなったSSDがあるはずだが、
サブメイン機のSSDを入れ替えようと思って、
Amazon探してみたところ、2017年1月に購入済みとあり、
結局、入れ替えようと持ったが、そのまま忘れてしまっている様子・・・

現在、11480円となっているが、購入時は7480円!

 

サブメイン機のSSD入替えて、余ったSSDをこのシンクラに移植。

mSATAなので、44pinIDEに変換ケースで、接続。

 

参考

-