![]() | ![]() | ![]() | ![]() | ![]() |
SAS/ACCESS® Interface to Teradata using the DBSLICEPARM=ALL option which uses the FASTEXPORT utility is unable to extract VARCHAR data correctly. Data integrity issues result due to incorrect data being returned when using the interface. No errors or warning messages will be issued.
However, if attempting to process the Teradata data into an Oracle table using SAS/ACCESS Interface to Teradata and SAS/ACCESS Interface to Oracle, the following error may occur:
SAS receives data from FastExport on multiple threads (2 threads by default). Each SAS thread takes a bufferload of data from FastExport and transfers it to SAS internal buffers. VARCHAR data received from FastExport is prefixed with the length. The length is saved in a variable and is used for copying the VARCHAR data into SAS internal buffers and filling the remaining area with blanks. For example, if the length of the VARCHAR data is 3 and the maximum length of the VARCHAR data field has been defined as 30, the field with have 27 blank characters(30-3=27).
The problem is that the variable that stores the length is in a global structure that is accessible to both threads. So, if the row processed by one thread has COLUMN_NAME='~', the value is set to 1. If at the same time, the other thread processes a row with COLUMN_NAME='RUS', the global value will be set to 3 resulting in a race condition.
This problem will occur only with FastExport for VARCHAR columns on all platforms. If all the values in the VARCHAR column have the same length, this problem will not occur.
To workaround, you can change the VARCHAR columns to CHAR columns. The problem only happens with VARCHAR columns having data of varying lengths. Even with VARCHAR columns, if length of the data stored in all the VARCHAR columns is the same, it should also work. For example, you have two columns, VARCHAR(30) and VARCHAR(20), but all the data stored in those two columns are of constant length, for example all the data stored have length 5, it will work.
Select the Hot Fix tab in this note to access the hot fix for this issue.
Product Family | Product | System | SAS Release | |
Reported | Fixed* | |||
SAS System | SAS/ACCESS Interface to Teradata | Microsoft Windows NT Workstation | 9.1 TS1M3 | 9.1 TS1M3 SP4 |
Microsoft® Windows® for 64-Bit Itanium-based Systems | 9.1 TS1M3 | 9.1 TS1M3 SP4 | ||
Microsoft Windows XP 64-bit Edition | 9.1 TS1M3 | 9.1 TS1M3 SP4 | ||
Microsoft Windows Server 2003 Standard Edition | 9.1 TS1M3 | 9.1 TS1M3 SP4 | ||
Microsoft Windows Server 2003 Enterprise Edition | 9.1 TS1M3 | 9.1 TS1M3 SP4 | ||
Microsoft Windows 2000 Professional | 9.1 TS1M3 | 9.1 TS1M3 SP4 | ||
Microsoft Windows 2000 Server | 9.1 TS1M3 | 9.1 TS1M3 SP4 | ||
Microsoft Windows Server 2003 Datacenter Edition | 9.1 TS1M3 | 9.1 TS1M3 SP4 | ||
Microsoft Windows 2000 Datacenter Server | 9.1 TS1M3 | 9.1 TS1M3 SP4 | ||
z/OS | 9.1 TS1M3 | 9.1 TS1M3 SP4 | ||
Microsoft Windows 2000 Advanced Server | 9.1 TS1M3 | 9.1 TS1M3 SP4 | ||
64-bit Enabled Solaris | 9.1 TS1M3 | 9.1 TS1M3 SP4 | ||
Microsoft Windows XP Professional | 9.1 TS1M3 | 9.1 TS1M3 SP4 | ||
64-bit Enabled HP-UX | 9.1 TS1M3 | 9.1 TS1M3 SP4 | ||
64-bit Enabled AIX | 9.1 TS1M3 | 9.1 TS1M3 SP4 |