You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MYOB Advanced本地连接MSSQL触发KeyNotFoundException故障求助

MYOB Advanced连接MSSQL全站崩溃问题解决

问题概述

本地安装的MYOB Advanced连接MSSQL服务器时,全站所有页面访问均触发KeyNotFoundException错误,切换至MySQL则无此问题。错误核心是许可证类型使用定义的字典中找不到对应键值,导致预取数据失败进而引发全站崩溃。

错误堆栈

[KeyNotFoundException: The given key was not present in the dictionary.]
   System.ThrowHelper.ThrowKeyNotFoundException() +38
   System.Collections.Generic.Dictionary`2.get_Item(TKey key) +54
   MYOB.AdvancedLive.Core.License.LicenceTypeUsageDefinition.PX.Data.IPrefetchable.Prefetch() +1067
   PX.Data.PXDatabase.prefetchMethod() +205
   PX.Data.PXDatabaseProviderBase.prefetchMethod(PrefetchDelegate`1 prefetchDelegate, PXDatabaseSlot slot) +455
   PX.Data.<>c__DisplayClass29_0`1.<GetSlot>b__3(PXDatabaseSlot slot) +78
   System.Lazy`1.CreateValue() +732
   System.Lazy`1.LazyInitValue() +189
   PX.Data.PXDatabaseProviderBase.GetSlot(String key, PrefetchDelegate`1 prefetchDelegate, Type[] tables) +1014
   PX.Data.PXDatabase.GetSlot(String key, Type[] tables) +232
   MYOB.AdvancedLive.Core.License.MYOBLicenseTypes.GetCurrentUsage(String licenceTypeID) +94
   MYOB.AdvancedLive.Core.Objects.SM.EntitlementsMaint.GetCurrentUsage(MyobLicenseEntitlementDefinition entitlement) +315
   MYOB.AdvancedLive.Core.Objects.SM.<>c__DisplayClass6_0.<EntitlementsFromLicense>b__0(MyobLicenseEntitlementDefinition entitlement) +53
   System.Linq.<>c__DisplayClass7_0`3.<CombineSelectors>b__0(TSource x) +23
   System.Linq.WhereSelectEnumerableIterator`2.MoveNext() +241
   MYOB.AdvancedLive.Core.License.<entitlements>d__3.MoveNext() +461
   System.Linq.<OfTypeIterator>d__95`1.MoveNext() +141
   System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +453
   System.Linq.Enumerable.ToList(IEnumerable`1 source) +69
   _CustomMethod(Object , Object[] ) +67
   PX.Data.PXView.InvokeDelegate(Object[] parameters) +346
   PX.Data.PXView.Select(Object[] currents, Object[] parameters, Object[] searches, String[] sortcolumns, Boolean[] descendings, PXFilterRow[] filters, Int32& startRow, Int32 maximumRows, Int32& totalRows) +1493
   PX.Data.PXGraph.ExecuteSelect(String viewName, Object[] currents, Object[] parameters, Object[] searches, String[] sortcolumns, Boolean[] descendings, PXFilterRow[] filters, Int32& startRow, Int32 maximumRows, Int32& totalRows) +1474
   PX.Data.PXGraph.ExecuteSelect(String viewName, Object[] parameters, Object[] searches, String[] sortcolumns, Boolean[] descendings, PXFilterRow[] filters, Int32& startRow, Int32 maximumRows, Int32& totalRows) +80
   PX.Web.UI.PXBaseDataSource.ExecuteSelect(String viewName, DataSourceSelectArguments arguments, PXDSSelectArguments pxarguments) +19764
   PX.Web.UI.PXDataSource.ExecuteSelect(String viewName, DataSourceSelectArguments arguments, PXDSSelectArguments pxarguments) +209
   PX.Web.UI.PXDataSourceView.Select(DataSourceSelectArguments arguments, PXDSSelectArguments swarguments, DataSourceViewSelectCallback callback) +65
   PX.Web.UI.PXGrid.PerformSelect() +1946
   System.Web.UI.Control.DataBindChildren() +249
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +191
   System.Web.UI.Control.DataBindChildren() +249
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +191
   System.Web.UI.Control.DataBindChildren() +249
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +191
   System.Web.UI.Control.DataBindChildren() +249
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +191
   PX.Web.UI.PXBoundPanel.OnAfterSelect(PXFormDataProvider provider) +179
   PX.Web.UI.PXFormDataProvider.OnDataSourceViewSelect(IEnumerable data) +587
   PX.Web.UI.PXFormDataProvider.DataBind() +384
   PX.Web.UI.PXBoundPanel.PerformSelect() +122
   System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +134
   PX.Web.UI.PXTab.OnPreRender(EventArgs e) +37
   System.Web.UI.Control.PreRenderRecursiveInternal() +200
   System.Web.UI.Control.PreRenderRecursiveInternal() +297
   System.Web.UI.Control.PreRenderRecursiveInternal() +297
   System.Web.UI.Control.PreRenderRecursiveInternal() +297
   System.Web.UI.Control.PreRenderRecursiveInternal() +297
   System.Web.UI.Control.PreRenderRecursiveInternal() +297
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +7474

解决方案

  • 核对许可证相关表数据:对比MSSQL与MySQL中MYOBLicenseType、MYOBLicenseUsage等系统表的记录,确认MSSQL中是否缺失MySQL里存在的许可证类型ID。若发现缺失,手动插入对应记录(需确保字段格式与现有数据一致)。
  • 清理并重置缓存:重启MYOB Advanced的应用池和后台服务,删除应用服务器临时目录下的缓存文件;若有数据库端缓存清理存储过程(如PX_CleanCache),执行该过程清除数据库缓存。
  • 调整MSSQL排序规则:检查MSSQL数据库的排序规则,若为区分大小写类型(如SQL_Latin1_General_CP1_CS_AS),修改为不区分大小写的规则(如SQL_Latin1_General_CP1_CI_AS),或确保所有许可证类型ID在代码与数据库中的大小写完全一致。
  • 重新执行数据库初始化脚本:针对MSSQL环境,重新运行MYOB Advanced提供的数据库初始化脚本,修复可能因迁移或安装遗漏的系统字典数据。
  • 验证版本兼容性:确认当前MYOB Advanced版本与所使用的MSSQL版本是否兼容,若存在版本不匹配问题,升级MYOB或调整SQL Server版本至兼容范围。

内容的提问来源于stack exchange,提问作者GrayFoxNZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 17:34:52