1

ドキュメントに従って、mdsecdsマクロは、各メタデータ オブジェクトに適用される権限レベルを示す一連のデータセットを生成します。

このデータをデータベースにロードし、(Web アプリを介して) ドリルダウンして、メタデータ オブジェクトの詳細なアクセス許可を明らかにします。

以下は昨日まで正常に機能していました。

%mdsecds()

しかし今、私たちは得ます:

MPRINT(MDSECTR):   proc transpose data=work.mdsecds_permsl out=work.mdsecds_permsw(drop=_name_);
MPRINT(MDSECTR):   by objname objuri identitydispname identityname identitytype;
MPRINT(MDSECTR):   id permission;
MPRINT(MDSECTR):   var authorization;
MPRINT(MDSECTR):   run;

NOTE: There were 4929844 observations read from the data set WORK.MDSECDS_PERMSL.
NOTE: The data set WORK.MDSECDS_PERMSW has 827938 observations and 20 variables.
NOTE: Compressing data set WORK.MDSECDS_PERMSW decreased size by 78.40 percent. 
      Compressed is 11921 pages; un-compressed would require 55197 pages.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           36.12 seconds
      cpu time            35.15 seconds


MPRINT(MDSECDS):  ;
MPRINT(MDSECVW):   proc sql;
NOTE: Simple index objuri has been defined.
NOTE: Composite index users has been defined.
NOTE: Simple index objuri has been defined.
NOTE: Composite index name has been defined.
NOTE 137-205: Line generated by the invoked macro "MDSECVW".
18         (location, objname, publictype, ObjId);           create view &targdata as          select &objcols, &trancols from
                                                                                                                          ____
                                                                                                                          22
18       ! &trandata a inner join &objdata b on a.objuri=b.objuri             order by location, objname, publictype, objid,
18       ! identityname,
ERROR 22-322: Syntax error, expecting one of the following: a name, ;, (, ',', ANSIMISS, AS, CROSS, EXCEPT, FULL, GROUP, HAVING, 
              INNER, INTERSECT, JOIN, LEFT, NATURAL, NOMISS, ORDER, OUTER, RIGHT, UNION, USING, WHERE.  

NOTE: Line generated by the invoked macro "MDSECVW".
18         (location, objname, publictype, ObjId);           create view &targdata as          select &objcols, &trancols from
                                                                                                                          ____
                                                                                                                          76
18       ! &trandata a inner join &objdata b on a.objuri=b.objuri             order by location, objname, publictype, objid,
18       ! identityname,
ERROR 76-322: Syntax error, statement will be ignored.

NOTE: Line generated by the macro variable "TRANCOLS".
18          a.identitydispname, a.identityname, a.identitytype, a.CheckInMetadata, a.ReadMetadata, a.WriteMetadata, a.Administer,
18       ! a.Create, a.Delete, a.Read, a.Write, a.WriteMemberMetadata, a.Alter Table, a.Create Table, a.Drop Table, a.Insert,
                                                                               _____
                                                                               22
18       ! a.Select, a.Update
MPRINT(MDSECVW):   create index objuri on work.mdsecds_permsw(objuri) create index users on work.mdsecds_permsw(objuri, 
identitydispname, identityname, identitytype) create index objuri on work.mdsecds_objs(objuri) create index name on 
work.mdsecds_objs(location, objname, publictype, ObjId) create view work.mdsecds_join as select b.ObjId, b.ObjName, b.Location, 
b.MetadataType, b.PublicType, b.Desc, b.ParentObjId, b.MetadataCreated, b.MetadataUpdated, b.ObjUri, b.Permissions, 
a.identitydispname, a.identityname, a.identitytype, a.CheckInMetadata, a.ReadMetadata, a.WriteMetadata, a.Administer, a.Create, 
a.Delete, a.Read, a.Write, a.WriteMemberMetadata, a.Alter Table, Table, a.Drop Table, a.Insert, a.Select, a.Update from a inner 
join work.mdsecds_objs b on a.objuri=b.objuri order by location, objname, publictype, objid, identityname, identitytype;
ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, *, **, +, ',', -, /, <, <=, <>, =, >, >=, ?, AND, AS, 
              CONTAINS, EQ, EQT, FROM, GE, GET, GT, GTT, LE, LET, LIKE, LT, LTT, NE, NET, OR, ^=, |, ||, ~=.  

NOTE: PROC SQL set option NOEXEC and will continue to check the syntax of statements.
MPRINT(MDSECVW):   quit;
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE SQL used (Total process time):
      real time           17.54 seconds
      cpu time            23.78 seconds

同様の問題がここで見つかったように見えますが、すべてのメタデータ オブジェクトが必要なため、フォルダーを提供するのは好ましくありません。

コードは、管理者アカウントを使用して EG 5.1 (SAS 9.3 Windows プラットフォーム) 経由で実行されています (したがって、すべてのメタデータにアクセスでき、他のエラー/警告は生成されませんでした)。

エラーの考えられる原因は何ですか?

4

2 に答える 2

0

@ に触発さdata _null_れて、以下を追加しました。

options validvarname=v7;

そしてそれはうまくいきました!EG がデフォルトoptions validvarname=ANYで を使用していることを考えると、何かが内部の自動呼び出しマクロを誤って送信したに違いありません。

参考までに、このマクロの結果を毎晩のバッチを介してデータベースに保存している他の人は、列レベルの権限データが必要以上に多いという意見があるかもしれません (私たちの場合、数百万のレコードについて話しています)。 、そして私たちはそれほど大きな店ではありません..列を無視する調整については、以下を参照してください(そして、はるかに高速な結果が得られます):

options validvarname=v7;
%mdsecds(memberfilter="@MetadataType ne 'Column'");
于 2016-03-11T17:31:54.037 に答える