SAS / Access всегда использует нижестоящее значение SAS, поэтому усечение всегда будет происходить, поскольку максимальная длина имени таблицы равна 32. Метки столбцов не усекаются, поскольку максимальная длина метки равна 256 (обычно метка - это имя таблицы СУБД).
Попробуйте использовать определение sqlserver libname и переместить данные с помощью proc fedsql.
Libname sqlsrv sqlserver details
proc fedsql;
create table Dest.USR as
select
*
from sqlsrv.User_Table;
quit;
PROC FedSQL может прийти на помощь, когда имеешь дело с проблемами с большей длиной столбца. Преимущество PROC FedSQL заключается в том, что при подключении к источнику данных он сопоставляет метаданные источника и цели соответственно и переводит в метаданные источника / цели без использования SAS / Access, поэтому усечение не происходит. Как oracle (источник) и sqlserver (цель) могут легко приспосабливать длину, поскольку текущая версия сервера sql и oracle поддерживают длину столбца 128.
У меня была похожая проблема, когда я перемещал данные из Hive в Teradata, и мне удалось исправить это с помощью proc fedsql и подробностей в одной из моих статей.
https://analytics.ncsu.edu/sesug/2017/SESUG2017_Paper-41_Final_PDF.pdf