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

标签 delphi delphi-7 ado

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

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

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 数据链路属性窗口,配置连接后将返回连接字符串。

过去,我能够取消选中空白密码并选中允许保存密码,并且密码和security info=true存在于返回的连接字符串。
但这种情况很久以前就已经改变了,不知道什么时候。该函数现在不再返回密码,并且不再包含 security info=true。因此,这些复选框始终会恢复,并且密码始终为空,如以下屏幕截图所示:enter image description here

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

编辑1
看来只有当我选择 SQL Server Native Client 11.0 作为提供程序时才会出现此问题。当我选择Microsoft OLE DB Provider for SQL Server时,没有任何问题,一切工作正常。
有没有办法让 native 客户端表现良好并返回所需的连接字符串? 我测试的操作系统是Windows 8.1

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

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

最佳答案

关键是Persist Security Info=True(顺便说一句,出于安全原因,不建议这样做)。 Native Client 10/11 的问题是,在数据链接对话框中对用户名或密码进行的任何更改都会将 Persist Security Info 重置为 False

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

enter image description here

关于delphi - Delphi 7 中的 PromptDataSource 给出了与之前不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41750423/

相关文章:

delphi - 如何从字符串中删除任何字符(或子字符串)?

delphi - Delphi7 中使用 AES (CBC) 在服务器和应用程序之间进行安全通信

sql - 在 SQL 中使用 QuotedStr

SQL:使用条件显示链接选项

class - 如何在 Delphi 中声明类方法的类型?

delphi - MadExcept 在 try finally 时触发

delphi - 将 TPopupMenu 与窗体的右侧对齐?

delphi - 动态创建组件时如何强制VCL样式覆盖?

sql - 如何获取参与 SQL for Oracle 的字段列表?

database - 经典 ASP - 使用 Windows 身份验证的 SQL Server 2008 连接字符串