0

我有一个在 Active Directory 环境中内部使用的站点。我们有 2 个数据库 _live 和 _audit

当用户通过其中一个视图输入数据时,当前记录被克隆以通过触发器进行审核(带有标记的操作,更新/删除和日期时间戳),并且实时数据库中的记录将更新为新的数据。嗯,这就是计划。

当我从本地开发解决方案运行此方案并将其指向实时数据库时,它可以 100% 工作,但在指向实时数据库的实时站点上,在 Web 服务器上,我不断收到以下错误。

An error occurred while updating the entries. See the inner exception for details.
 at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter) 
 at System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options) 
 at Portal.Repositories.Product_Master_GroupingRepository.Save() in D:\.....:line 125
 at Portal.Controllers.Factory.Products.Prod_Info.PLUController.Edit(Int32 id, VM_Product_Master_Grouping viewModel) in D:\.....:line 200 
 at lambda_method(Closure , ControllerBase , Object[] ) 
 at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) 
 at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) 
 at System.Web.Mvc.Async.AsyncControllerActionInvoker.\u003c\u003ec__DisplayClass37.\u003c\u003ec__DisplayClass39.\u003cBeginInvokeActionMethodWithFilters\u003eb__33() 
 at System.Web.Mvc.Async.AsyncControllerActionInvoker.\u003c\u003ec__DisplayClass4f.\u003cInvokeActionMethodFilterAsynchronously\u003eb__49()

其他一些观察

  1. 来自实时站点的数据库交互通过我们创建的别名发生。
  2. 如果我们禁用触发器,实时站点可以很好地保存,但不会发生日志记录。
  3. 当触发器处于活动状态时,即使插入/更新“失败”,也会生成 SQL 语句。(但是当我从 SQL 探查器复制语句并在 SQL 中手动运行它时,记录会被更新和记录(通过触发器))
  4. 我在别名没有的网络上获得了管理员权限(认为它可能与问题有关......但不确定)

如果有帮助的话,我可以提供一些代码。

4

1 回答 1

0

正如帕维尔建议的那样。阅读给出的例外。如果它显示“有关详细信息,请参阅内部异常”。去检查内部异常......它会帮助。(事实证明,我的异常记录器只记录了主要异常消息和堆栈跟踪,但是一旦我将内部异常添加到实时站点,我可以清楚地看到触发器失败,这证实了我对问题与安全相关的怀疑)

于 2012-06-06T05:55:37.240 回答