4DのSQLサーバは4Dデータベースに格納されたデータへの外部からのアクセスを可能としています。サードパーティのアプリ ケーションや4Dアプリケーションからは、4D ODBC Driverを使用してアクセスします。また、4Dクライアントと4D Serverアプリケーションとの間では、ダイレクトに接続します。そしてすべての接続は TCP/IPプロトコルによって行われます。
4DアプリケーションのSQLサーバはいつでも停止あるいは開始できます。さらにパフォーマンスやセキュリティのためTCPポートを変更したり、待 ち受けIPアドレスを指定したり、4Dデータベースへのアクセスを制限したりできます。
4D SQLサーバへの外部アクセスはODBC (すべての設定) 経由、または直接 (4D Serverに接続されている4Dクライアントアプリケーション) 行われます。以下の図はこのことを示しています:
![](../../picture/148322/pict148322.en.png)
青: ODBC経由の接続
赤: 直接接続
クエリレベルでは、直接外部接続あるいはODBC経由の接続を開くことは、SQL LOGINコ マンドで実行されます。詳細については、このコマンドの説明を参照してください。
- ODBC経由の接続: 4Dはあらゆるサードパーティのアプリケーション (Excel® タイプのスプレッドシートや他のDBMS等) 、及び他の4Dアプリケーションが、4DのSQLサーバに接続するためのODBC driverを提供します。4D ODBC driverは、SQLクライアントが動作するマシンにインストールします。4D ODBC driverのインストールと設定は別マニュアルで説明しています。
- 直接接続: 4D Serverアプリケーションだけが、他の4Dアプリケーションからの直接SQLクエリに応答できます。同様に、 "Professional" 製品ラインの4Dアプリケーションだけが、他の4Dアプリケーションへの直接接続を開くことができます。直接接続が実行されている間のデータ交換は、自動 的にデータ統合と同期性に関連する問題を排除する同期モードで実行されます。1つのプロセスにつき1つの接続だけを許可されます。同時に複数の接続を実行 する場合、必要なだけプロセスを作成しなければなりません。直接接続は、接続先 (4D Server) 側のデータベース設定の"SQL"ページにあるSSL を有効にするオプションを有効にすることによって、保護できます。直接接続はSQLサーバが開始されている場合のみ、4D Serverにより認可されます。直接接続の主な利点は、データ交換のスピードが速くなることです。
SQLサーバは3つの方法で開始または停止できます:
- データベース設定でアプリケーションの開始時に自動で起動するよう設定する。これを行うには、SQL/設定ページで開始時に SQLサーバを起動するオプションにチェックを入れます。
![](../../picture/310649/pict310649.en.png)
- (テーマの) START SQL SERVERやSTOP SQL SERVERコマンドを使用してプログラムで制御する。
SQLサーバが停止している (またはまだ開始されていない場合)、4Dは外部からのSQLクエリに応答しません。
Note: SQLサーバの停止は、4D SQLエンジンの内部動作に影響しません。SQLエンジンは内部クエリに対し常に有効です。
4Dに統合されたSQLサーバの公開パラメタを変更できます。このパラメタはデータベース設定のSQL/設定ページにありま す:
- 開始時にSQLサーバを起動オプションを使用して、アプリケーションの開始時にSQLサーバを起動できます。
- TCPポート: デフォルトで4D SQLサーバはTCPポート19812に応答します。このポートが他のサービスで既に使用されていたり、あなたの接続パラメーターが他の設定を必要とする場合 は、4D SQLサーバが使用するポート番号を変更できます。
Note: 0を指定すると、4DはデフォルトのTCPポート19812を使用します。 - IPアドレス: SQLサーバがSQLクエリを処理するために使用する、マシンのIPアドレスを限定することができます。デフォルトではすべてが選択されて いて、サーバはすべてのIPアドレスへのクエリに応答します。
"IPアドレス"ドロップダウンリストには、マシンに設定されているすべてのIPア ドレスがリストされます。特定のアドレスを選択すると、サーバはこのIPアドレスに送信されたクエリのみに応答します。
これは複数のTCP/IP アドレスを持つマシン上で動作する4Dアプリケーションで有効な設定です。
Note:
- クライアント側では、アプリケーションが接続するSQLサーバのIPアドレスやポート番号を、ODBCデータソース定義で正しく設定しなければなりませ ん。
- 4D v14以降、SQL サーバーはIPv6アドレス記法を受け取るようになりました。サーバーは、前項の"IPアドレス"の設定がすべてに設定されているときはIPv6とIPv4接続を無差別に受け取ります。詳細な情報に関しては、Support of IPv6 を参照して下さい。
クライアント側では、アプリケーションが接続するSQLサーバのIPアドレスやポート番号を、ODBCデータソース定義で正しく設定しなければなりませ ん。 - SSLを有効にする: このオプションは、SQL接続を処理する際にSQLサーバがSSLプロトコルを使用するかしないかを指定します。このオプションをチェックした時は、key.pemとcert.pemファ イルを以下の場所へコピーしてください:
MyDatabase/Preferences/SQL ("MyDatabase"はデータベースフォルダ/パッケージ)。
この場合SQL LOGINコマンドで接続を開く際、SQLサーバーのIPアドレスの後ろに":ssl"キーワードを追加しなければならない点に留意してください。 - Flash Playerリクエストを許可する: このオプションで、4D SQLサーバによるFlash Playerリクエストをサポートするメカニズムを有効にするかどうかを指定できます。このメカニズムは、データベースの環境設定フォルダ (Preferences/SQL/Flash /) に "socketpolicy.xml" という名前のファイルが存在するかどうかに基づきます。このファイルはFlash Playerがクロスドメインの接続やFlex (Web 2.0) アプリケーションのソケットによる接続を行う場合に必要とされます。
以前の4Dバージョンでは、このファイルを手作業で追加しなければなりません でした。これからは、Flash Playerリクエストを許可するオプションをチェックすることにより有効化されます。このオプションを チェックすると、Flash Playerリクエストが受け入れられ、必要に応じて、データベース用の汎用"socketpolicy.xml" ファイルが作成されます。このオプションの選択を解除した場合、 "socketpolicy.xml" ファイルは無効となります(名前変更)。後にSQLサーバが受け取るすべてのFlash Playerクエリは拒否されます。
データベースを開い た時、このオプションがチェックされているか否かは、データベースの環境設定フォルダに有効な"socketpolicy.xml" ファイルが存在するかどうかに基づきます。
Note: 4DのSQL SET OPTIONコマンドで、外部リクエストを処理する際にSQL サーバが使用するエンコーディングを設定できます。
セキュリティの理由で、SQLサーバに送信された外部クエリが4Dデータベースで行うことのできるアクションを制限できます。
2つのレベル でコントロールが可能です:
- 許可するアクションのタイプのレベル
- クエリを実行するユーザのレベル
- これらはデー タベース設定のSQL/設定ページで設定できます
備考: On SQL Authenticationデータベースメソッドを使い、4D内部SQLエンジンに対する全ての外部アクセスを制御することもできます。
このダイアログボックスに設定されているパラメタはデフォルトスキーマに適用されます。データベースへの外部接続制御 は、SQLスキーマ (
4Dと4D SQLエンジン統合の原則参照) のコンセプトに基づきます。カスタムスキーマを作成しない場合、すべてのデータベーステーブルはデフォルトスキーマに含まれます。特定のアクセス権で他の スキーマを作成し、それらをテーブルに割り当てる場合、カスタムスキーマに含まれていないテーブルのみが、デフォルトスキーマに含まれます。
SQLサーバによるデフォルトスキーマに対し、3タイプのアクセス設定ができます:
- "読み込みのみ (データ)": データベーステーブルのすべてのデータに対する無制限の読み込みアクセス。レコードの追加、更新、削除のほか、データベースストラクチャに対する変更はで きません。
- "読み書き (データ)": データベーステーブルのすべてのデータへの読み書き (追加、更新、削除) アクセスが可能です。データベースストラクチャの更新は許可されません。
- "フルアクセス (データとデザイン)": データベーステーブルのすべてのデータへの読み書き (追加、更新、削除) およびデータベースストラクチャの更新 (テーブル、フィールド、リレーションなど) が許可されます。
それぞれのアクセスタイプごとにユーザのセットを割り当てることができます。3つのオプションが選択可能です:
- <Nobody>: このオプションを選択すると、指定されたタイプのアクセスは、クエリの発行元にかかわらず拒否されます。このパラメタは4Dパスワードアクセス管理システ ムが有効でない場合でも使用できます。
- <Everybody>: このオプションを選択すると、指定されたタイプのアクセスは、制限なしにすべてのクエリに対して許可されます。
- ユーザーグループ: このオプションは、ユーザのグループを作成し、特定のタイプへのアクセスを行うことができるユーザを指定するために使用します。このオプションを使用する ためには4Dパスワードシステムが有効になっていなければなりません。クエリ元のユーザは、SQLサーバへの接続時、ユーザ名とパスワードを提示します。
警告: それぞれのアクセスタイプは他とは独立して設定されます。具体的には、読み込みのみ のアクセスのみを一つのグループに与えたとしても何の効力もありません。何故ならこのグループ(と他のユーザー全て)は、引き続き読み書き アクセス(デフォルトで<Everybody>に設定されている)が可能だからです。読み込みのみ のアクセスを設定したい場合には、同時に読み書き アクセスも設定する必要があります。
警告: このメカニズムは4Dパスワードシステムに依存します。SQLサーバに対するアクセスコントロールを動作させるためには、(Designerにパスワード を設定して、) 4Dパスワードシステムが有効になっていなければなりません。
注: 4Dプロジェクトメソッドごとに追加のセキュリティオプションを設定できます。詳細は4Dと4D SQLエンジン統合の原則の"SQL利用可オプション"を参照してください。