Blackfish SQL でエラー:You have reached the maximum connection count (20) for this license. No more connections are allowed.

CodeGear の Blackfish SQL データベースには、接続制限があります。
適当にプログラムを作ってしまうと、わりあい簡単に達してしまうこの制限数、気をつけるポイントの一つ、コネクションの管理について検証してみました。

*

CodeGear 公式の情報はこちら

コネクション数オーバーのエラーは次の様なもの。

「You have reached the maximum connection count (20) for this license. No more connections are allowed.」

「このライセンスで使える20コネクション数に達しちゃったからこれ以上つなげられないよ」と言われています。

どんなプログラムかと言うと、次の様なものです。

C# 版
[code lang=’c#’] string connectionString = @”host=localhost;database=c:\path\to\file.jds;user=sysdba;password=masterkey”;
DataStoreConnection conn;

for (int n = 0; n < 30; n++) { using (conn = new DataStoreConnection(connectionString)) { conn.Open(); } } [/code] 30回コネクションを張ろうとしています。 しかし、残念ながら、このプログラムでは先のエラーが発生します。 using によって conn オブジェクトのスコープを定義し、破棄が行われるようになっているのですが、インスタンス化されたオブジェクトの破棄は、IDisposable インターフェイスにて管理されるものの、その Dispose メソッド内でデータベースの接続が Close されているかどうかは実装次第なんですね。 そして、DataStoreConnection クラス内では、Close が Dispose 時に自動で行われないことから、Open したら .NET Framework のリソースとして接続プールがある限り、コネクションが保持されてしまうようです(Blackfish SQL に限ったことではありませんが)。 しかし、Blackfish SQL には接続制限数があるので、エラーしてしまう、と。 解決策としては、手動で接続を必ず行う、と言ったところでしょうか。 下記のプログラムのように、Close() を明示的に呼び出すものであれば、エラーせずに動作します。 C# 版 [code lang='c#'] string connectionString = @"host=localhost;database=c:\path\to\file.jds;user=sysdba;password=masterkey"; DataStoreConnection conn; for (int n = 0; n < 30; n++) { using (conn = new DataStoreConnection(connectionString)) { conn.Open(); conn.Close(); } } [/code] Delphi Prism 版 [code lang='delphi'] for n: Integer := 0 to 30 do begin using conn: DataStoreConnection := new DataStoreConnection('host=localhost;database=c:\path\to\file.jds;user=sysdba;password=masterkey" providerName="Borland.Data.BlackfishSQL.RemoteClient') do begin conn.Open(); conn.Close(); end; end; [/code] 実開発では、さらに try ~ catch ~ finally でリソース管理をすべきでしょう。 次の様な感じ。 [code lang='c#'] using (conn = new DataStoreConnection(connectionString)) { try { conn.Open(); [なんかデータベースの処理] } catch { [ねんか例外の処理] } finally { conn.Close(); //とにかく最後には切断 } } [/code] ガベージコレクションは最後の砦で、基本的にはプログラマがリソース管理をすべき、じゃないでしょうかね。

10年集客し続けられるサイトを、ワードプレスで自作する9つのポイント プレゼント

【最後まで読んでくれたあなたに】

あなたは、24時間365日、自分の代わりに集客し続けてくれるWebサイトを作りたい!と思ったことはありませんか?

私はこれまで500以上のWebサイトの構築と運営のご相談に乗ってきましたが、Webサイトを作ってもうまく集客できない人には、ある一つの特徴があります。

それは、「先を見越してサイトを構築していないこと」です。
Webサイトで集客するためには、構築ではなく「どう運用するか」が重要です。

しかし、重要なポイントを知らずにサイトを自分で構築したり、業者に頼んで作ってもらってしまうと、あとから全く集客に向いていないサイトになっていたということがよく起こります。

そこで今回、期間限定で
『10年集客し続けられるサイトをワードプレスで自作する9つのポイント』
について、過去に相談に乗ってきた具体的な失敗事例と成功事例を元にしてお伝えします。

・ワードプレスを使いこなせるコツを知りたい!
・自分にピッタリのサーバーを撰びたい!
・無料ブログとの違いを知りたい!
・あとで悔しくならない初期設定をしておきたい!
・プラグイン選びの方法を知っておきたい!
・SEO対策をワードプレスで行うポイントを知りたい!
・自分でデザインできる方法を知りたい!

という方は今すぐ無料でダウンロードしてください。

期間限定で、無料公開しています。

※登録後に表示される利用条件に沿ってご利用ください

コメントを残す