Symptoms
Consider the following scenario: You run a SQL Server Integration Services (SSIS) package in SQL Server 2005 or in SQL Server 2008. The SSIS package contains a data flow task. You run the SSIS package on a computer that has low available memory.The low-memory condition may occur temporarily or intermittently. When you run the SSIS package, data buffers are written to disk because of the low-memory condition.In this scenario, you may experience one or more of the following symptoms:
Symptom 1Data is damaged before the data reaches the data flow destination. You find that the data in the data flow destination becomes the following values unexpectedly.”" : NULL, blank, or empty string values0 : Zero value or zero value that has higher precision and scale.0-0-0 0:0:0: Dashed zero date valueNote You will not receive an error message when you experience this symptom.
Symptom 2You receive one of the following data type conversion error messages:
Error message 1
DTS_E_OLEDBERROR.An OLE DB error has occurred. Error code: 0×80004005.
An OLE DB record is available.Source: “Microsoft SQL Native Client”Hresult: 0×80004005Description: “Invalid character value for cast specification”.
Error message 2
DTS_E_COLUMNSTATUSERROR. There was an error with input column “ColumnName” (IDnumber) on input “OLE DB Destination Input” (IDNumber). The column status returned was: “Conversion failed because the data value overflowed the specified type.”.
Symptom 3You receive the following constraint violation error message:
DTS_E_OLEDBERROR.An OLE DB error has occurred. Error code: 0×80004005.
An OLE DB record is available.Source: “Microsoft SQL Native Client”Hresult: 0×80004005Description: “The statement has been terminated.”.
An OLE DB record is available.Source: “Microsoft SQL Native Client”Hresult: 0×80004005Description: “Violation of PRIMARY KEY constraint ‘PrimaryKeyName’. Cannot insert duplicate key in object ‘TableName’.”.
Additionally, if you run the same SSIS package again when memory is available, this issue does not occur.
Resolution
When a low-memory-resource notification is sent to the data flow engine, the data flow engine writes data buffers to disk temporarily.This issue occurs because data values are set to NULL or zero incorrectly when the data flow engine writes data buffers to disk. Therefore, when the data flow engine reads data from data buffers and then writes data to the data flow destination, the data flow destination will contain damaged data values. The damaged data values may also result in data type conversion errors or constraint violation errors.