我可以轻松找出正在使用的客户端版本,但是如何找出服务器版本?

有一个AdsMgGetInstallInfo ace函数和一个相应的存储过程sp_mgGetInstallInfo

这些是否需要一些特殊特权?

我期望找到一个TAdsConnection.ServerVersion属性,但是似乎不存在类似的东西?

最佳答案

我只为.NET提供程序找到了AdsConnection.ServerVersion,因此在Delphi Advantage Database包装程序中可能会丢失它。
但是您可以尝试调用Advantage Management API函数AdsMgGetInstallInfo并在ADS_MGMT_INSTALL_INFO结构中接收aucVersionStr成员,该成员应为Advantage Database Server版本。因此,它可能看起来像这样(这是AdsMgGetInstallInfo参考中的修改示例)。

请注意,我尚未测试过,希望您拥有所有数据类型和结构定义。

uses ACE;

function GetServerVersion: string;
var
  Size: UNSIGNED16;
  MgmtHandle: ADSHANDLE;
  ResultValue: UNSIGNED32;
  InstallInfo: ADS_MGMT_INSTALL_INFO;
begin
  Result := '';
  ResultValue := ACE.AdsMgConnect('\\MyExample\Server', nil, nil, @MgmtHandle);
  if (ResultValue <> AE_SUCCESS) then
    Exit;
  Size := SizeOf(ADS_MGMT_INSTALL_INFO);
  ResultValue := ACE.AdsMgGetInstallInfo(MgmtHandle, @InstallInfo, @Size);
  if (ResultValue <> AE_SUCCESS) then
    Exit;
  Result := InstallInfo.aucVersionStr;
end;

关于delphi - 如何获取Advantage Database Server的版本号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6929189/

10-12 04:48