A blog about SQL Server, SSIS, C# and whatever else I happen to be dealing with in my professional life.

Find ramblings

Thursday, June 17, 2010

SSIS Location: pageref.cpp:913 Expression: IS_OFF (BUF_MINLOGGED, m_buf->bstat) || pageModifyType != PageModifyType_Contents || GetPagePtr ()->IsTextPage ()

I have no idea what the subject means beyond "when I'm loading data to a named instance of SQL Server 2008, SP1 using SQL Server package storage, OLE DB destination in fast table or view mode and a parent-child package paradigm, SSIS may-or-may-not shit all over itself"

Error Description: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug or data corruption. To check for database corruption, consider running DBCC CHECKDB. If you agreed to send dumps to Microsoft during setup, a mini dump will be sent to Microsoft. An update might be available from Microsoft in the latest Service Pack or in a QFE from Technical Support. ".
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "Location: pageref.cpp:913
Expression: IS_OFF (BUF_MINLOGGED, m_buf->bstat) || pageModifyType != PageModifyType_Contents || GetPagePtr ()->IsTextPage ()
SPID: 62
Process ID: 1820".


I've run DBCC for all the databases on my box (W2k3) and I can also reproduce it on a different box.  If I look in the log, I see "SQL Server Assertion: File: <pageref.cpp>, line=913 Failed Assertion = 'IS_OFF (BUF_MINLOGGED, m_buf->bstat) || pageModifyType != PageModifyType_Contents || GetPagePtr ()->IsTextPage ()'. This error may be timing-related. If the error persists after rerunning the statement, use DBCC CHECKDB to check the database for structural integrity, or restart the server to ensure in-memory data structures are not corrupted."

It seems like it's the actual OLE DB destination component that is failing so handily but I can't prove it, yet.  Thus far, what I have been able to do to make the problem stop is to either have the child package on the file system or I switch data access mode from "table or view - fast mode" to "table or view."  Both appear to be equally effective but have semi-obvious drawbacks.  File system deploy would be a departure from how the rest of our SSIS packages work.  Using the non-fast version results in slower package execution because SSIS will perform singleton inserts.  Feed the transaction log baby!

For what it's worth, I never had any trouble like this with SSIS on 2005.

Yes, I've seen http://support.microsoft.com/kb/968740/ but since the table I'm writing to has a clustered index and I'm not doing an online index rebuild I'm confident in saying the article does not apply to me.

3 comments:

Todd McDermid said...

Have you found any further information on this issue? I have it happening to me on a test server. I'm not using page compression or rebuilding indexes (to my knowledge) either, and have the same error show up when I try to insert. In my case, however, it only appears when the table is empty. If I place just one row into the table manually, the package will run just fine...

Anonymous said...

It happens for me with cumulative update 9 on top of sql server 2008 sp1. No problem still cumulative update 5.

Thanks for workaround adding one row to the table.

Adding one row in destination table helps me to by-pass this error.

Anonymous said...

You should post this on microsoft connect here:

https://connect.microsoft.com/SQLServer/feedback/details/573638/ssis-package-failes-with-ole-db-error-when-using-transaction-support-on-sequence-container#

I've reproduced the exact same problem. Remove the check on "Table Lock" and the error dissapears.