We have around 700Gb of 32bit SAS datasets that have been copied to a
new Win2008 server without all libraries being converted to 64bit.
Sometimes 32bit and 64bit can exist in the same library. Our current
process has the following steps:
1) Walk through the directory tree and look for datarepname=WINDOWS_32
in sashelp.vtable. Keep libpath and memname details.
2) For each libpath and dataset name, use proc copy noclone to create
a 64bit version in a temp location.
3) After verifying the new 64bit copy, overwrite the 32bit original.
Unfortunately, this process is very slow and will probably take 10
hours to complete based my test run and I can only get a small
I recall from mainframe days that interesting binary information could
be read from the header of SAS datasets. Does anyone have that
specification for Windows SAS files? I am hoping to isolate all the
32bit datasets rather than allocate each library and load up the
dictionary before it can be queried.
What will cost you most time is i/o when physically copying the data
sets. It's not traversing through the directory structure looking for
32 bit data sets.
To convert to 64bit and then "overwrite" the 32bit version you either
make sure that the temp directory is on another disk (2 write
operations but on different disks) OR if on the same disk step 3
should be: delete 32bit version, MOVE/RENAME 64bit version (only 1 big
write operation, move/rename on the same disk is only changing the
file allocation table).
- Consider running several copy processes in parallel (i.e. using
rsubmit blocks on same server).
- Make sure that you also copy indexes and constraints (can be defined
within PROC DATASETS copy statement, does not have to be the default
As 700 GB ARE 700 GB it will take time. Look that you get a bigger
maintenance window or probabely run this conversion process over
several nightly maintenance windows.