在我的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 datalink property window
并在配置连接后返回connectionstring。
过去,我可以取消选中Blank password
并检查Allow saving password
,并在返回的连接字符串中显示密码和security info=true
。
但这已经改变了一段时间,不确定何时。该函数现在永远不会返回密码,并且不再包含security info = true。因此,这些复选框始终还原,密码始终为空,如此屏幕截图所示:
我怀疑有些Windows更新已经对我这么做了,或者它可能是别的吗? 我希望有人遇到过此问题,并为此提供解决方案。
编辑1
只有当我选择SQL Server Native Client 11.0
作为提供者时,才会出现问题。当我选择Microsoft OLE DB Provider for SQL Server
时没有问题,一切正常
有没有办法使Native Client运行并返回所需的连接字符串?
我正在测试的操作系统是Windows 8.1
编辑2
我尝试按照注释中的建议设置属性持久性安全信息= true,但是在使用本机客户端时再次将其恢复,但在使用OLE DB客户端时则不会恢复
编辑3
我按照评论中的建议,通过制作扩展名为.udl的文本文件并双击它来尝试它。结果是相同的,它适用于OLE DB提供程序,但不适用于本机客户端