Get server info for all librefs

吃可爱长大的小学妹 提交于 2019-12-08 05:30:14

问题


How can I get a table with variables libref and server_id (or any server info) for all libraries available to me in SAS?

My goal is to get a summary of where the data is physically located for all these libraries, in order to write efficient queries when fetching data from different servers.


回答1:


Look at what information is available in the view SASHELP.VLIBNAM (or DICTIONARY.LIBNAMES when using PROC SQL).

Here is a utility macro that pulls the engine, host and schema from that view for a given libref. I have used it for TERADATA, ORACLE and ODBC engines. dblibchk.sas




回答2:


From Tom's code and advices I built the table I needed with this code:

PROC SQL;
SELECT distinct libname, engine, path,
CASE WHEN engine in('BASE','V9') THEN 'SAS' ELSE catx('_',engine,path) END AS server
FROM DICTIONARY.LIBNAMES ;
QUIT;



回答3:


there are a few tables that can help you in the Library SASHELP like Tom mentioned. You can also use VTABLE will have all the tables from which library and VCOLUMN will have the detail from library to table to columns as well as the data type used and it's length. They work a bit like in SQL data from the information_schema database.

Alternatively using proc content on a dataset will also return all of it's component and you can put that in a table or a macro variable. Hope this helps!



来源:https://stackoverflow.com/questions/50603438/get-server-info-for-all-librefs

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!