2017-02-14 6 views
1

私はDelphi 7、SQL Server 2008 R2で作業しており、ADOを使用してデータベースに接続しています。 複数のアプリケーション間でADOConnectionStringを共有する - Delphi

私の接続文字列:

プロバイダ= SQLOLEDB.1;統合セキュリティ= SSPIは、セキュリティ情報= Falseの永続;初期カタログ= TESTDataBase;データソース= TestDataSource

私が作るとき、私のTADOconnection.Connected True Connectin文字列は、

プロバイダー= SQLOLEDB.1;統合セキュリティ= SSPI;セキュリティ情報を永続化する= False;初期カタログ= TESTDataBase;データソース= TestDataSource; 準備手順= 1; オート= Trueの翻訳;パケットサイズ= 4096;ワークステーションID = MYMachineNameを;データ= Falseのための使用の暗号化、列の照合順序を持つタグときはFalse =可能

あり、10個の以上のアプリケーションがあると私は同じを使用することを計画していますすべてのアプリケーションで接続文字列。 私はFirstApplcationに接続するとき、私はレジストリまたは他のアプリケーションのために同じ接続文字列を使用することができますいくつかの場所でそれを保存するADO接続文字列を作成しています。

同じユーザーが複数のアプリケーションを実行できます(2つまたは3つまたは5つのアプリケーション)。

私は3つの質問があります

1)私は接続を共有する必要がありますか?

私が(に書き込み、接続文字列を作成してデータベースに接続し、同じ接続文字列を共有

または

(ここで、レジストリまたは一部への書き込み)接続文字列を作成し、同じ接続文字列を共有する意味レジストリなど)

2)私のアプリケーションでは、共有接続文字列を取得すると、もう一度データベースに接続する必要があります(TADOConnection.Connected = true)。私は別のアプリケーションであるので、私は再び接続する必要があると思う:)

3)私のすべてのアプリケーションについては、私はアプリケーション(メインフォーム)フォームショーで接続を開き、アプリケーション(メインフォーム)アプリケーションが終了し、TADOCOnnection.KeepConnection = Trueの場合にのみ、接続が閉じられます。これは、パフォーマンスの問題やデータベースサーバーの負荷を作成しますか?

+1

必要なプロパティ(カタログ、サーバー、ログインの詳細など)をどこか(設定ファイル、レジストリ、..)に保ち、接続文字列を自分で作成してください。 – whosrdaddy

答えて

2

共有されたUDLファイルは、接続の共有に適しています。統合セキュリティ= SSPI;

をデータソース= TestDataSource;セキュリティ 情報= Falseの永続;初期カタログ= TESTDataBase

プロバイダ= SQLOLEDB.1:つまりは、あなただけの接続文字列のために必要プロパティを使用します

の後にADO によって追加された追加のプロパティについては心配しないでください。これは、使用する特定のプロバイダ(SQLOLEDB.1)のデフォルトのプロパティです。正確な接続文字列またはUDLファイル(共通プロバイダー)を使用する場合は、他のすべてのアプリケーションで同じプロパティーが設定されます。 SQL ServerへのADO接続は、既定でプールされます。

MyConnection.ConnectionString := 'FILE NAME=c:\my_shared_path\shared.udl'; 
MyConnection.Open; 

共有接続オブジェクト(TADOConnection)を保持するのに適した場所は、アプリケーション全体で共有データモジュールです。 データモジュールまたはメインフォームOnCreateイベントで開きます。 TADOConnectionが破棄されると、接続は自動的に閉じられます。

+0

3番目の質問にお答えください。データベースサーバーに対するパフォーマンス上の問題や負担はありますか?私はアプリケーションを閉じるまで、私は接続を閉じていないのですか? 100人のユーザーがそのアプリケーションを使用している場合、100の接続が開かれます。 5アプリケーション用5 * 100ユーザー= 500オープン接続 – DelphiLearner

+0

デフォルトでは、SQLサーバーでは最大32,767のユーザー接続が可能です。ほとんどの時間は「眠っている」状態です。それはあなたのために十分ですか? – kobik

+0

したがって、パフォーマンス上の問題やサーバーの負担はありません。ありがとうございました。 – DelphiLearner

関連する問題