我目前正在将数据仓库从SQL 2012升级到SQL2016。新旧DW并行运行。
我的ETL流程(由第三方在SSIS中开发的框架)在2012年成功运行了两年多,但在2016年失败了。到目前为止,数据库和ETL流程是相同的。
这两个服务器都是在VMWare上运行的虚拟机。旧服务器是Win 2008,具有24Gb RAM。SQL 2012标准 最大内存设置为16Gb。新服务器是Win 2012,具有64Gb RAM。SQL 2016开发 最大内存设置为50Gb。新的DW正在运行v13.0.1601.5 RTM Developer Edition(64位)。
在运行我的ETL进程时,将SQL合并到维或事实表中的加载步骤失败,并出现以下错误。
全文:
描述:SQL Server声明:文件:,line = 951失败声明='IS_OFF(BUF_MINLOGGED,m_buf-> bstat)|| pageModifyType!= PageModifyType_Contents || GetPagePtr()-> IsTextPage()'。此错误可能与时序有关。如果重新运行该语句后错误仍然存在,请使用DBCC CHECKDB检查数据库的结构完整性,或者重新启动服务器以确保内存中的数据结构没有损坏。
按照建议,我已经运行DBCC,没有发现错误。我还重新启动了SQL。然后,我重新启动了ETL流程,并得到了相同的错误。
我对此错误的搜索显示,这是SQL 2008、2012和2014年的已知错误并已在后续的修补程序和累积更新中修复。因此,我很惊讶看到它在2016年重新出现。
我发现的链接说,如果数据库处于“简单”或“大容量日志记录”恢复模型中,则在尝试执行插入操作时会影响SSIS。(我正在以简单恢复模式运行)
建议的解决方法是将Db恢复模型更改为FULL。我已经尝试过了,并且可以正常工作,但这并不是数据仓库的解决方案。
其他人在2016年遇到过这个吗?
谁能建议替代解决方法?
更新:
2016年7月26日:我应用了重要更新KB3164398(v13.0.1708.0),问题仍然存在。
2016年7月27日:我已应用累积更新CU1 KB3164674(v13.0.2149.0)。
2016/3/8:在我们最小的立方体上,错误在一夜之间发生。CU1无法解决问题。今天,我报告了MS Connect上的错误,并且还与Microsoft记录了支持电话。
2016年12月8日:MS-Support最初做出了回应,但回应是“我们没有针对此问题的解决方案”。支持人员将与他的同事讨论该问题,并尽快与我联系。8天后,我没有收到他的消息。
尽管我没有“解决方案”,但我们确实找到了适合我们的解决方法。查看我发布的答案。
29/9/2016。我上周应用了CU2。在Thursay上,我们意外地运行了旧版本的合并,但由于相同的错误再次失败。所以.. CU2也没有修复它。
23/1/2017:我应用了2016 SP1 CU1,我相信这已经解决了问题。特别是KB3205964