Base SAS 9.1 Procedures Guide, Volumes 1, 2, 3 and 4

What Are the Specific Considerations for Each Member Type?

Note: More information on migrating various member types can be found elsewhere on the Migration Community pages.

Migrating a Data File with Indexes, Integrity Constraints, Audit Trails, or Generations

When you migrate an indexed data file using the MIGRATE procedure, the data set migrates first, then the index is applied. If errors occur while indexing a migrated data set, the data set will migrate without the index and a WARNING is written to the SAS log. If an index fails to migrate, resolve the error and recreate the index.

Similarly, for data files with integrity constraints and audit trails, the data file migrates first. However, if errors occur when applying integrity constraints to the migrated data file, or when migrating an audit trail or generations, the data file is removed from the target library and a NOTE is written to the SAS log. Even if MOVE was specified, the source library s data file will not be deleted.

But, when you migrate a data file that has referential integrity constraints using the MIGRATE procedure and the MOVE option, the data file migrates to the target library first, then the referential integrity constraints are applied. The source library is not deleted by the MOVE option because it contains referential integrity constraints. This causes an ERROR to be written to the SAS log even though the actual migration of the data file and referential integrity constraints was successful.

Migrating a Data Set with NODUPKEY Sort Assertion

The default behavior when migrating data sets that have NODUPKEY asserted in the attributes, is a WARNING written to the SAS log stating that the data set is still sorted, but the NODUPKEY sort assertion was removed on the target library s data set. This is the default behavior because under some conditions (see SAS Note http://support.sas.com/techsup/unotes/V6/1/1729.html) data sets that were sorted with the NODUPKEY option in prior releases might still retain observations with duplicate keys. If you use the default behavior to obtain the NODUPKEY sort assertion on the target data set, you must re-sort the migrated data set by the key variables in PROC SORT so that observations with duplicate keys are eliminated and the correct attributes are recorded. To avoid having to re-sort the migrated data set, use the KEEPNODUPKEY option. However, if you use the KEEPNODUPKEY option, you will need to examine your migrated data to determine if observations with duplicate keys exist. If so, you will need to re-sort the data set to have the data and NODUPKEY sort assertion match.

Migrating from 32-bit Library to 32-bit Library

Linux, z/OS, and some Windows platforms stayed at 32-bit access so there is no 64-bit migration needed for those platforms.

Migrating from a 32-bit Library to a 64-bit Library

If you are using SAS 8 or an earlier release on AIX, Solaris, or HP/UX platforms, you likely have 32-bit members in your libraries. In SAS 8.2, SAS for these platforms was available in either 32-bit or 64-bit. Previous to that release, only the Tru64 UNIX platform was 64-bit.

With SAS 9, you can read and write your 32-bit data files. You can read SQL views, ACCESS views, and MDDBs. If you need additional access, you should migrate your library. Other members must be migrated in order to be accessed.

As in other migrations, DATA step views that do not contain their source must be recreated and all stored DATA step programs must be recompiled from source. In addition, 32-bit item stores must be recreated with SAS 9.

The MIGRATE procedure automatically migrates the 32-bit members of the IN= source library to 64-bit members in the OUT= target library.

Note: The MIGRATE procedure does not handle migrating from 32-bit platforms to 64-bit platforms of another operating environment family, for example, from 32-bit UNIX to 64-bit Windows.

Migrating from a 32-bit Catalog to a 64-bit Catalog

On HP/UX, Solaris, and SAS 8 AIX platforms, to migrate a 32-bit catalog to a 64-bit catalog with PROC MIGRATE, you must have access to the SAS 8 32-bit server and Remote Library Services (RLS) from SAS/SHARE or SAS/CONNECT. Your catalogs are read through the 32-bit server connection and then written in 64-bit data representation in the target library. You must specify SLIBREF= in PROC MIGRATE when migrating from 32-bit to 64-bit. Note that you can manually convert your catalogs by using Chapter 13, The CPORT Procedure, on page 281and Chapter 8, The CIMPORT Procedure, on page 213.

SAS 6 catalogs on the AIX platform cannot be accessed by PROC MIGRATE [*] . For all other catalogs from the affected source platforms, use a SAS 8 server for the SLIBREF= specification.

Note: The MIGRATE procedure does not handle migrating from 32-bit platforms to 64-bit platforms of another operating environment family, for example, from 32-bit UNIX to 64-bit Windows.

Using Remote Library Services (RLS) to Migrate your Library

RLS (either SAS/SHARE or SAS/CONNECT) must be used with PROC MIGRATE to perform two important migration tasks :

  1. Migrating certain SAS 6/SAS 8 source libraries containing catalogs to 64-bit target libraries, even if they are on the same machine. The affected source platforms are:

    • 32-bit AIX

    • 32-bit HP/UX

    • 32-bit Solaris

    • all Alpha VMS All VAX VMS.

  2. Migrating from one physical machine to another when both machines are in the same host family.

Migration from one of the affected source platforms where the library contains members including catalogs to a 64-bit target library is the most complex migration scenario, but visualizing this scenario is the best way to understand the relationship between PROC MIGRATE and RLS. SAS data created on the affected source platforms are considered foreign files in 64-bit SAS and are subject to compatibility limitations. Migrating libraries using PROC MIGRATE removes these limitations. For a more complete explanation of the limitations, see "Upgrading from a 32-bit to a 64-bit platform" on the SAS Migration Community web site at http://support.sas.com/rnd/migration/planning/platform/64--bit.html. The following are two scenarios in which PROC MIGRATE is used with RLS:

  1. If your source library was created with one of the affected source platforms and your source library contains catalogs, you must use a 32-bit SAS 8 [*] server to migrate the catalogs, regardless of whether or not the source and target libraries are on the same machine. This can all be accomplished in a single PROC MIGRATE step by using the SLIBREF= option.

    In the example below, the source and target libraries are on the same machine. source and v8srv are library names that reference the same physical location. The only difference is that LIBNAME v8srv was defined in a separate SAS 8 session. LIBNAMEs source and v8srv are then defined in the current SAS 9.1 session. The SLIBREF= option determines where PROC MIGRATE gets any catalogs. PROC MIGRATE uses IN= to migrate the remaining members in the source library.

    libname source 'path to source library'; libname target 'some valid path on same machine'; libname v8srv server=srv1; ***32-bit SAS 8 server where v8srv is defined; proc migrate in=source out=target slibref=v8srv; run;

  2. If your source library and target library are on different machines, you can use RLS to migrate all files in the source library using a SAS 9.1 server, unless the source library was created by one of the affected source platforms and contains catalogs. If that is the case the catalogs must be migrated using a 32-bit SAS 8 [**] server.

    In the example below, the first two LIBNAME statements reference the same physical location from two different servers, but are defined in two different server sessions. As in the first example, the SLIBREF= option determines where PROC MIGRATE gets the catalogs. PROC MIGRATE gets the source library catalogs through a 32-bit SAS 8 server, and gets the other source library files from the same location, but through a SAS 9.1 server.

    ***srv1 is the SAS 9.1 server where v9_1srv is defined; libname v9_1srv server=srv1; ***srv2 is the 32--bit SAS 8 server where v8srv is defined; libname v8srv server=srv2; libname target 'some valid path'; proc migrate in=v9_1srv out=target slibref=v8srv; run;

[*] SAS 6 catalogs on the AIX platform cannot be migrated using PROC MIGRATE but the remaining members in the source library can migrate to the target library. To import SAS 6 catalogs on the AIX platform, use the PROC CPORT in SAS 6 to output your catalogs from the source library to transport format files. Then use PROC CIMPORT in SAS 9.1 to import the transport files into the target library. Use PROC MIGRATE to migrate the remaining members of your source library to the target library.

[*] SAS 6 catalogs on the AIX platform cannot be migrated using PROC MIGRATE but the remaining members in the source library can migrate to the target library. To import SAS 6 catalogs on the AIX platform, use the PROC CPORT in SAS 6 to output your catalogs from the source library to transport format files. Then use PROC CIMPORT in SAS 9.1 to import the transport files into the target library. Use PROC MIGRATE to migrate the remaining members of your source library to the target library.

[**] SAS 6 catalogs on the AIX platform cannot be migrated using PROC MIGRATE but the remaining members in the source library can migrate to the target library. To import SAS 6 catalogs on the AIX platform, use the PROC CPORT in SAS 6 to output your catalogs from the source library to transport format files. Then use PROC CIMPORT in SAS 9.1 to import the transport files into the target library. Use PROC MIGRATE to migrate the remaining members of your source library to the target library.

Категории