2017-01-19 5 views
3

私のDelphi 7アプリケーションでは、SQL Serverへの接続を構築し、接続文字列を設定ファイルに格納することができます。
これは何年もの間何の問題もなく今まで働いてきました。Delphi 7のPromptDataSourceは以前と異なる結果を出しています

接続文字列を構築するためのコードはこれです:

procedure TDataModuleMain.GetADOProviderString; 
var 
    ConnectionString : string; 
begin 
    ConnectionString := PromptDataSource(Application.MainForm.Handle, cdsConnectionsADOConnectionString.AsString); 

    if ConnectionString <> cdsConnectionsADOConnectionString.AsString then 
    begin 
    if not (cdsConnectionsADO.State in [dsEdit, dsInsert]) then 
     cdsConnectionsADO.Edit; 
    cdsConnectionsADOConnectionString.AsString := ConnectionString; 
    end; 
end; 

PromptDataSourceはADODB.pasから関数であり、それは Microsoft datalink property windowとれたconnectionStringが返され、接続を設定した後が表示されます。

以前はBlank passwordのチェックを外して、Allow saving passwordとパスワードとsecurity info=trueが返された接続文字列に存在することを確認できました。
しかし、これはしばらく前に変更されています。この関数はパスワードを返さず、security info = trueも含まなくなりました。その結果、これらのチェックボックスは常に元に戻り、このスクリーンショットのようにパスワードは常に空です。enter image description here

私はいくつかのウィンドウの更新がこれを行ったと思われますか?
私は誰かがこれに遭遇し、それに対する解決策があることを願っています。

EDIT 1
私がプロバイダとしてSQL Server Native Client 11.0を選択したときだけ問題が起きる表示されます。 Microsoft OLE DB Provider for SQL Serverを選択すると問題はなく、すべて正常に動作します。
ネイティブクライアントを動作させ、希望の接続文字列を返す方法はありますか?私がテストしてい OSは

EDIT 2
私はコメントで示唆されているように、真のプロパティ永続セキュリティ情報=を設定してみましたが、やはりこれはネイティブクライアントを使用する場合に戻されますが使用していないときますのWindows 8.1でありますコメントで示唆したように、私は、拡張子.UDLのテキストファイルを作成し、その上でダブルクリックすることによって、それを試してみましたOLE DBクライアント

EDIT 3
。結果は同じですが、OLE DBプロバイダでは動作しますが、ネイティブクライアントでは動作しません。

+1

私はあなたのqはOSとADOプロバイダは、使用している、すなわち、項目のカップルが不足していると思いますか? – MartynA

+0

@MartynA私の質問には、プロバイダとOSを追加しました。 – GuidoG

+0

https://msdn.microsoft.com/en-us/library/ms130978aspx – Sami

答えて

2

キーはPersist Security Info=Trueです(セキュリティ上の理由から推奨されていません)。 Native Client 10/11の特徴は、データリンクダイアログでユーザー名またはパスワードを変更するとがリセットされ、Persist Security InfoFalseになります。

だからあなたはあなたがユーザー名/パスワードを変更し、TruePersist Security Infoを変更後Allタブを入力する必要があります。暗号化されていないパスワードの保存が推奨されていないという情報ダイアログが表示される場合があります。

enter image description here

+0

この順序でそれをすることは、トリックでした、ありがとうございました。警告が表示されたダイアログボックスは、ユーザーがすでにそれに慣れていても問題ありません。また、接続文字列はconfigファイルに暗号化されて格納されているので、そこに問題はありません – GuidoG

関連する問題