【问题标题】:Acces violation when update field in table更新表中的字段时访问冲突
【发布时间】:2015-08-18 10:53:50
【问题描述】:

我已经制作了一个 exe (Update.exe) 文件来通过 SQL 语句更新表中的记录。
我制作了另一个程序 (update_service.exe),它在 windows 中作为管理服务运行。

当我独立运行 update.exe 时,它​​会更新表中的记录。没有错误。它有效。
当 update.exe 通过 update_service.exe 执行时,它会给我一个访问冲突:

Access violation at address 40006A2F in module 'rtl60.bpl'. Read of address 00000004.

发生错误的操作系统是W2003服务器。
德尔福第 6 版
数据访问组件:ADODB
这是一个 VCL 应用程序

在我本地的 W7 PC 上一切正常。

代码:

procedure TService1.tmr1Timer(Sender: TObject);
var
  LclParams : string;
begin
  if (FBusyUpgrading) or (UpgradeFileExists()) then
    Exit;

  if HourOfTheDay(Time) = HourOfTheDay(strToTime(FStartServiceTime)) then
    if MinuteOfTheHour(Time) = MinuteOfTheHour(strToTime(FStartServiceTime)) then
      begin
          FBusyUpgrading := True;
          WinExecAndWait32(IncludeTrailingBackslash(GetCurrentDir) + 'update.exe /START', SW_NORMAL);
          FBusyUpgrading := False
      end;

end;

我该如何解决这个问题?

FWIW:用于更新的 SQL 语句:

sl.Add('UPDATE Licentie SET ExpiratieDatum=' + QuotedStr(LicenseKey.Expiratie) + ' WHERE Active=True')

(LicenseKey.Expiratie 为普通字符串)

【问题讨论】:

  • update.exe 从带有 /START 参数的 ide 启动时发生了什么?你可以使用菜单 Run > Parameters ?.
  • Update.exe 是一个什么样的应用程序?您绝对不能从服务中生成交互式应用程序,实际上我不相信您可以从服务中生成 任何 外部应用程序 - 如果可以,则仅受您使用的服务帐户的用户权限的限制。
  • Update.exe 是一个普通的 delphi 应用程序。我可以通过日志文件看到应用程序正在运行。只有更新语句给出了访问冲突。运行 update.exe(不是通过服务)时,它可以正常工作。
  • 您能否提供有关 LicenseKey.Expiratie 的更多详细信息?它可能是具有从文件或注册表读取的 getter 方法的属性吗?
  • LicenseKey.Expiratie 只是一个字符串属性

标签: delphi delphi-6


【解决方案1】:

Licentie 表中的 ExpiratieDatum 字段是日期时间字段吗?

在这种情况下,可能是格式问题。
该服务使用管理员帐户启动,该帐户的日期时间格式可能与您在启动 update.exe 时登录的用户不同。

【讨论】:

  • 我以管理员身份登录。当我启动 update.exe 时,它​​工作正常。 Expiratiedatumm 是一个字符串字段。
  • 所以您是以本地管理员身份登录的?不是具有管理员权限的用户,但实际上是用户“管理员”?你说 Expiratiedatumm 是一个字符串字段,我想知道数据库表中的字段是 DateTime 类型还是 VarChar 类型。如果数据库中的字段是 DateTime 并且您是从 c# 中的字符串填充它,那么该字符串的日期格式很重要,并且对于服务而言,这可能与对您而言不同
猜你喜欢
  • 1970-01-01
  • 2014-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-27
  • 2012-10-11
  • 1970-01-01
  • 2018-07-08
相关资源
最近更新 更多