Delphi 7 中的 PromptDataSource 给出了与之前不同的结果

PromptDataSource in Delphi 7 is giving different results it did before

在我的 Delphi 7 应用程序中,可以建立到 sql 服务器的连接并将连接字符串存储在配置文件中。
多年来,这一直没有任何问题。

构建连接字符串的代码是这样的:

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 并且在配置连接之后连接字符串是 returned.

过去,我可以取消选中 Blank password 并选中 Allow saving password,密码和 security info=true 出现在 returned 连接字符串中。
但这在前段时间发生了变化,不确定何时。该函数现在从不 return 设置密码并且不再包含安全信息=true。结果,这些复选框总是恢复原样,密码总是为空,如屏幕截图所示:

我怀疑某些 windows 更新对我造成了这种影响,或者可能是其他原因?
我希望有人遇到过这个问题并有解决方案。

编辑 1
看来只有当我选择 SQL Server Native Client 11.0 作为提供者时才会出现问题。当我选择 Microsoft OLE DB Provider for SQL Server 时没有问题,一切正常。
有没有办法让 Native Client 正常运行并 return 所需的连接字符串? 我正在测试的 OS 是 Windows 8.1

编辑 2
我尝试按照评论中的建议设置 属性 persistent security info=true,但在使用本机客户端时再次恢复,但在使用 OLE DB 客户端时不会恢复

编辑 3
按照评论中的建议,我尝试制作一个扩展名为 .udl 的文本文件并双击它。结果是一样的,它适用于 OLE DB 提供程序但不适用于本机客户端

密钥是 Persist Security Info=True(顺便说一句,出于安全原因,不推荐这样做)。 Native Client 10/11 的问题在于,在数据 Link 对话框中对用户名或密码的任何更改都将 重置 Persist Security InfoFalse .

因此您必须在 更改 username/password 并将 Persist Security Info 更改为 True 之后进入 All 选项卡 。您可能会看到一个信息对话框,说明不建议保存未加密的密码。