I'm the project leader in an enterprise in Mexico and we are starting to install SAS/Server as a framework for programming.
I have EG4 installed (I don't have standalone SAS). I access a repository with SAS/Server. Code will run on the server, but I still need to access my files in the PC. Specifically I would like to create a library to reference files in my PC.
I need to be able to run things like:
select * from LibPC.SASDatase1 inner join LibServer.SASDataset2 on LibPC.id = LibServer.id;
Any ideas (other than copying all my PC datasets to a directory in the server) will be greatly appreciated.
How about something like this: go to the folder on your PC containing the data and allow it to be shared; in your SAS code that runs on the server, issue a "NET USE" command, using the SAS X command,to give the folder a letter mapping from the server; then issue your libname statement. I am trying to reverse what is done when you run SAS locally and access data on the server.
When SAS installs EGuide 4, it now blocks x-command and DDE statements as a default. I checked with their tech support and they showed me how to edit the registry entry to take out the "noxcmd" startup option and it now works fine. I would recommend checking with them about the details.
When I say I have data locally, it is primarly Excel files, TXT files and legacy datasets from SAS.
About the X command possibility, it gives me an error saying Warning: Shell escape is not valid in this SAS session. I wonder if IT has restricted this with an option in the SAS/Server configuration file?
If you search in the EG topic for "Error using PIPE to create directory", you will find this explanation from somebody in SAS R&D who works with EG:
"PIPE, SYSTASK and XCMD are among the features disabled by default when running a SAS server configured with SAS Integration Technologies. These features can present a risk to use on a central server that is accessed by lots of users with Enterprise Guide.
By default, the Object Spawner starts the SAS session with the -NOXCMD option which does not allow SYSTASK commands to be run.
I'd suggest opening a track with tech support and explaining your situation; they can advise you as to the best workaround for what you're trying to do."
You are in a slightly different situation, but it seems that issuing X commands or PIPEs is not going to get you the ability to read your local data.
Imagine this scenario -- you have Excel data on your personal machine stored in the directory: C:\mydata\wombat.xls
BUT, the stored process server and the workspace server are probably out on the network someplace and they may not even be on Windows machines. So the "C:\mydata drive address" method won't work. You will probably have to use some kind of machine name addressing, such as:
\\machine\sharename\dirname\filename.ext in your filename or libname statement: \\PC4343\public\mydata\wombat.xls
If you use SAS Data Integration Studio, you can define these source tables in the metadata so they are available for subsequent use. DIStudio will build the appropriate filename/libname statements for you. If you do not have DIStudio, then your best bet is still to contact SAS Tech Support for help in figuring out the correct way to reference these files from within EG in a server environment.
EG uses the MS Jet engine to read Excel files on the local Windows file system and SAS/Access to PC File Formats (I think) on the server file system. Generally, it works fine but, obviously, this can lead to inconsistancies if a spreadsheet is moved.
For SAS datasets, assuming your server runs some MS flavour, then follow the other posters advice and use UNC addressing: libname pclib "\\pcnetworkaddress\C$\myproject\sasdata" . For Unix servers, you will need NFS (e.g Samba) configured or you will have to copy SAS files manually. Be careful if you copy files to 64-bit Unix. CEDA may take care of the translation but you need to check large files (>10Gb) carefully.
UNC addresses are also good for text files but you could also consider filename ftp.
Thanks to everyone for your replies so far. This is far more helpful than the support I've received from SAS Mexico, SAS USA or (ugh) my IT team.
Unfortunately, I think the method in which you assign a library to \\MyPC\C$\... will not work, as we have our PCs set up in Active Directory and thus we don't have permission to share folders. I guess I could try setting the library to point to a File Server and see if that works - I will keep you posted.
I do not have Data Integration Studio nor Access to PC files right now, so those are not very helpful :/
About what the last poster commented, I saw a post in a newsgroup in which a procedure was posted to edit the registry and prevent Enterprise Guide from blocking DDE and other stuff (on the client side). However this is not possible since REGEDIT is also disabled.
I will let you guys know if I can make SAS read some datasets from the File Server. However, any other comments or suggestions are greatly appreciated.
Unfortunately, reading datasets from the File Server is not possible, I don't know if the server itself is not connected to the network in which the File Server resides or whether it is because the File Server is a Windows server and the SAS server is a Solaris.
Any other ideas will be greatly appreciated. Thanks in advance,
perhaps this problem occurs because the sas server cannot "see" the machine (yours?) holding the files you want the sas server to read. Obviously the sas server is "listening" for your connections from EG. It would be unusual for you to provide corresponding functionality on your "desktop" that allowed the sas server to connect directly to your machine without you controlling the connection. But that seems to be what you are asking for. It is of course technically possible, but conflicts with most system security policies. Also it doesn't seem appropriate for EG to circumvent that policy.
Unless you give your own machine this "server" functionality, I think you need to place the files you want accessed by the server, in some location to which it has access.