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