BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.
Jose7
Obsidian | Level 7

Hi experts!

I'm executing a sas program from linux command line, example:

/sas94/sashome/SASFoundation/9.4/sasexe/sas program.sas

I have to assign a libname to connect a sql server database to obtain the data, but I have this problem 

 

ERROR: Could not load /sas94/sashome/SASFoundation/9.4/sasexe/sasodb (32 images loaded)
ERROR: /sas94/sapiq160/IQ-16_0/lib64/libodbc.so: version `VERS_3.52' not found (required by
/sas94/sashome/SASFoundation/9.4/sasexe/sasodb)
1 LIBNAME SAMPLE2 ODBC NOPROMPT="Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.6.so.1.1;SERVER=999.99.9.999,8888;
1 ! DATABASE=example1;UID=usr_XX;
2 PWD=ABCD" SCHEMA=dbo;
ERROR: The SAS/ACCESS Interface to ODBC cannot be loaded. The SASODB code appendage could not be loaded.
ERROR: Error in the LIBNAME statement.

 

I also have tried this: LIBNAME SAMPLE2 ODBC DATAsrc=NAMESRC_S SCHEMA=dbo USER=usr_XX PASSWORD="{SAS222}828A4PP5CB131A25BC" ;

and I obtain the same error.

BUT, when I do it from SAS enterprice Guide, both libname staments work fine!

any idea?

1 ACCEPTED SOLUTION

Accepted Solutions
Patrick
Opal | Level 21

As @Quentin proposes: Use sasbatch.sh for your SAS batch jobs. This .sh gets built as part of a SAS installation and calls the .cfg and autoexec files that have been configure for your environment.

View solution in original post

4 REPLIES 4
Quentin
Super User

I've never had luck with using the NOPROMPT method from linux, but the second libname statement looks good to me:

LIBNAME SAMPLE2 ODBC DATAsrc=NAMESRC_S SCHEMA=dbo USER=usr_XX PASSWORD="{SAS222}828A4PP5CB131A25BC" ;

You get:

ERROR: The SAS/ACCESS Interface to ODBC cannot be loaded. The SASODB code appendage could not be loaded.

from that as well?  When you run the batch job, are your running it on the same linux SAS server which EG is connected to?  

 

 

The Boston Area SAS Users Group is hosting free webinars!
Next webinar will be in January 2025. Until then, check out our archives: https://www.basug.org/videos. And be sure to subscribe to our our email list.
Jose7
Obsidian | Level 7
Yes, I Obtain both errors (ODBC y SASODB), and it´s the same linux SAS server which EG is connected to


Quentin
Super User

I guess it's possible that EG is using a different config file when it launches SAS.  The config file points to the ODBC connection info etc.  You might be able to work with your SAS admin to figure out what config file (and possibly other option) EG is using.

 

The other possible path would be to use another metadata-aware SAS client to batch submit the program.  My understanding is SAS Management Console can batch submit a program.  I've also used DI studio to define a simple job with a single %include statement.  Then if I deploy that job for scheduling, DI studio writes a .sas file that can be batch submitted from a shell script.

 

On my linux server, the shell script (I think provided by sas is called sasbatch.sh).  So if I run:

 

/opt/sas/sasconfig/.../BatchServer/sasbatch.sh 
  -sysin /quentin/myprogram.sas
  -batch
  -noterminal

it will batch submit myprogram.sas.  And I think the shell script loads the config files that are used by EG (or I guess by the batch server), and it does the metadata login etc.  So all the stuff that EG automatically enables works.

The Boston Area SAS Users Group is hosting free webinars!
Next webinar will be in January 2025. Until then, check out our archives: https://www.basug.org/videos. And be sure to subscribe to our our email list.
Patrick
Opal | Level 21

As @Quentin proposes: Use sasbatch.sh for your SAS batch jobs. This .sh gets built as part of a SAS installation and calls the .cfg and autoexec files that have been configure for your environment.

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 4 replies
  • 1004 views
  • 2 likes
  • 3 in conversation