現在、データウェアハウスをSQL 2012からSQL 2016にアップグレードしています。新旧両方のDWを並行して実行しています。
私のETLプロセス(サードパーティがSSISで開発したフレームワーク)は2012年に2年以上正常に実行されましたが、2016年には失敗しています。これまでのところ、データベースとETLプロセスは同じです。
どちらのサーバーも、VMWareで実行される仮想マシンです。古いサーバーはWin 2008で、24GbのRAMを搭載しています。SQL 2012標準 最大メモリは16Gbに設定されています。新しいサーバーは64GbのRAMを備えたWin 2012です。SQL 2016開発者。最大メモリは50Gbに設定されています。新しいDWはv13.0.1601.5 RTM Developer Edition(64ビット)を実行しています。
ETLプロセスの実行中に、SQL Mergeを使用してディメンションまたはファクトテーブルにロードするステップは、次のエラーで失敗します。
全文:
説明:SQL Serverアサーション:ファイル:、行= 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コネクトのバグを報告し、マイクロソフトとのサポートコールも記録しました。
2016年12月8日:最初にMS-Supportが応答しましたが、「それに対する修正はありません」という応答でした。サポート担当者は、同僚とそれについて話し合い、私に連絡するつもりでした。8日後、彼から連絡がありません。
「解決策」はありませんが、自分に適した回避策を見つけました。私の投稿した回答をご覧ください。
2016年9月9日。先週CU2を適用しました。Thursayで、同じエラーで再び失敗した古いバージョンのマージを誤って実行しました。CU2はそれを修正していません。
2017 年 1 月23日:2016 SP1 CU1を適用しました。これで問題が解決したと思います。特にKB3205964