Hi Everyone, among other Autocall-Macros, SAS offers a couple of macros, let's call them mdsec-framwork (see: https://go.documentation.sas.com/doc/en/bicdc/9.4/bisecag/n0l1mpdt430djgn1bl1c3euei85w.htm ), which rely on each other to generate datasets with information from the SAS metadata model (see: https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/lrmeta/titlepage.htm ), that can be used to create a securtiy report. They are bundeled in the wrapper-macro "mdseecds": %macro mdsecds (
folder="/",
includesubfolders=YES,
membertypes="*",
memberfilter="",
perms="",
IdentityTypes="",
IdentityNames="",
outdata=work.mdsecds,
includeTableComponents=YES,
includeCubeComponents=YES,
includeSecuredTables=YES
);
%let outdata=%str(&outdata);
%if %quote(&outdata) = %then %do;
%put ERROR: OutData dataset name must be specified.;
%return;
%end;
/* Call to the mdsecgo macro */
%mdsecgo(
folder=&folder,
includesubfolders=&includesubfolders,
membertypes=&membertypes,
memberfilter=&memberfilter,
objdata=&outdata._objs,
includeTableComponents=&includeTableComponents,
includeCubeComponents=&includeCubeComponents,
includeSecuredTables=&includeSecuredTables
);
/* Call to the mdsecgp macro */
%mdsecgp(
objdata=&outdata._objs,
permdata=&outdata._permsl,
Perms=&perms,
IdentityTypes=&IdentityTypes,
IdentityNames=&IdentityNames,
conddata=&outdata._pconds
);
/* Call to the mdsectr macro */
%mdsectr(
permdata=&outdata._permsl,
trandata=&outdata._permsw
);
/* Call to the mdsecvw macro */
%mdsecvw(
objdata=&outdata._objs,
trandata=&outdata._permsw,
targdata=&outdata._join
);
%mend mdsecds; Some of the called macros in the wrapper-macro were written back in 2012 for SAS 9.3M2 or even older, eg. 2007 for SAS 9.2. I presume, as a consequence of the non-existence of the metadata data step functions back in 2007(see: https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/lrmeta/p02e3ara4110hcn1dei1tun4smmu.htm ), the implemented method of retrieving metadata was via XML-formatted SAS Open Metadata Interface method calls with PROC METADATA which return XML output that mirrors the (xml)input, except the requested values are filled in. However, the returnd xml had to be "converted" to a SAS dataset by using the XML LIBNAME engine, having defined an XML map beforehand. My question is as follows: is there a SAS-coding-version ot the mdsec-framework, in particular of the coding that generates the "permissions data" dataset that lists the URIs of objects in the metadata server, that contains the authorization information that is currently defined for each object, which relies on the metadata data step functions, therefore avoiding the detour coding of xml request ? (The information is essentially the same as what is displayed on the authorizations tab of the SAS Management Console.) The reason I am aksing this is, that I get error messages when executing mdsecds like this: mdsecds (
folder="/",
includesubfolders=YES,
membertypes="*",
memberfilter="",
perms="",
IdentityTypes="",
IdentityNames="",
outdata=work.mdsecds,
includeTableComponents=YES,
includeCubeComponents=YES,
includeSecuredTables=YES
); meaning, that I want to retrieve all information by starting on the very top of the metadata tree ("/") The error i get ( i assume due to the fact that the macros are coded using the xml-way of retrieving the metadata information): ERROR: IOM call failed because of a data conversion error.
ERROR: Failed to transcode data from U_UTF8_CE to U_LATIN1_CE encoding because it contained characters which are not supported by
your SAS session encoding. Please review your encoding= and locale= SAS system options to ensure that they can accommodate the
data that you want to process. A portion of the source string, in hex representation is:
NOTE: 1137a6bd8: 3c 47 65 74 4d 65 74 61 64 61 74 61 3e 3c 4d 65 |<GetMetadata><Me|
NOTE: 1137a6be8: 74 61 64 61 74 61 3e 3c 50 68 79 73 69 63 61 6c |tadata><Physical|
ERROR: Some code points did not transcode. ERROR: Physical file does not exist, /work_p/SAS_workB72C0161002E_macdb001/#LN00062. ERROR: Encountered during XMLInput parsing at or near line 1, column 1. ERROR: The definition for the "COLUMNS" table is not well-formed or is corrupt. Is there someone out there, who might be able to help? Thank's a lot! FK1
... View more