Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最奇怪的sql server错误发生在生产环境中_Sql_Asp.net_Sql Server_Database_Security - Fatal编程技术网

最奇怪的sql server错误发生在生产环境中

最奇怪的sql server错误发生在生产环境中,sql,asp.net,sql-server,database,security,Sql,Asp.net,Sql Server,Database,Security,和其他任何web应用程序一样,我得到的web应用程序带有aspx表单和sql数据库,托管在amazon上 从上个月开始,一件奇怪的事情开始发生,当有人从web表单提交更改时,更改被保存在数据库中,但一夜之间这些值会回滚到旧值。并没有自动的过程,并没有夜间的程序或备份,并没有网络帐户被黑客攻击,什么都并没有,它只是神奇地回到数据库中的旧值 我确实放了一个带有受影响表的日志表来跟踪每个事务、什么时候、谁做的等等,并发现更改发生在一天中的不同时间,也发生在表上的随机字段列上 例如: 今天我在一张表中更

和其他任何web应用程序一样,我得到的web应用程序带有aspx表单和sql数据库,托管在amazon上

从上个月开始,一件奇怪的事情开始发生,当有人从web表单提交更改时,更改被保存在数据库中,但一夜之间这些值会回滚到旧值。并没有自动的过程,并没有夜间的程序或备份,并没有网络帐户被黑客攻击,什么都并没有,它只是神奇地回到数据库中的旧值

我确实放了一个带有受影响表的日志表来跟踪每个事务、什么时候、谁做的等等,并发现更改发生在一天中的不同时间,也发生在表上的随机字段列上

例如: 今天我在一张表中更改了ontime、officeme、foodorderFlag、activeFlag,明天我看到ontime、offtime和activeFlag又变回了原来的值

然后我再次更改了它们,第二天只有ontime和foodorderFlag更改回了旧值

我的日志: 我得到了一个审计表,当公司表被插入、更新或删除时,它通过触发器获得一个条目。

上面突出显示的是在公司表正常过程中通过web表单更新值时公司表的日志。datemodified和modifiedbyuserid在后台自动更新,不是web表单上的直接字段

现在

见下文

上面突出显示的是:午夜公司表中的值如何更改回旧值。。请注意,datemodified和modifiedbyuserid这次没有回滚,这意味着此更改不是表单web表单。看起来像是使用相同登录名但不是web表单的外部源。此外,如果这是由系统或sql更改的,则用户将像amazona\administrator或sa等。。但事实并非如此

知道吗,我现在想可能是什么

全部固定
这都是因为我懒惰粗心懒散。几个月前,我进行了迁移,并没有在新窗口中运行脚本,而是在production:o上现有的存储过程下进行迁移,但忘记了删除它。无论何时调用该存储过程,它都会运行迁移脚本,并重置值。抱歉浪费了你们的时间。

是否有未提交的事务在某个时间点回滚?因此应用了这些值,但由于事务尚未提交,因此在将来的某个时间会有一个回滚,该回滚会撤消您的值?在访问有问题的表时,您使用什么隔离级别?READ_uncommitted隔离级别或WITH NOLOCK提示将返回未提交的数据。如果是这样的话,Jane可能会认为事务回滚。你确定它正在回滚吗?它只是被正常事务覆盖吗?您需要提供更多关于日志工作方式及其捕获内容的详细信息。如果您的web应用捕获用户名,您需要尝试将其添加到您的日志中,如果您的web应用仅在单个服务帐户下运行,这可能会很困难。如果它是某个正在回滚的事务,您可以首先通过运行dbcc opentran找到它;例如,与SSM分开连接。另外,在更新后立即从另一个连接查询表,并添加一个with READCOMMIT提示,以防万一。@user1908862我认为您需要将您是一个懒惰、粗心的懒鬼作为回答,然后接受它-