Das Makro verwendet keine SAS-Daten (Tabellen oder Datensätze) als Quelle. Es arbeitet direkt mit dem SAS-Metadatensystem, indem es die Definitionen der gespeicherten Prozesse abfragt und ändert. Folglich gibt es keine Abhängigkeit von externen Daten oder spezifischen Bibliotheken für seine funktionale Ausführung.
1 Codeblock
DATA STEP
Erklärung : Dieser `DATA _NULL_`-Block wird verwendet, um mit dem SAS-Metadatenserver zu interagieren. Die Funktion `metadata_pathobj` versucht, den durch den `target`-Parameter angegebenen gespeicherten Prozess zu lokalisieren und dessen Typ (`cmtype`) und URI (`stpuri`) zu extrahieren. Diese Informationen werden dann in lokalen Makrovariablen gespeichert. Es wird überprüft, ob das gefundene Objekt ein 'StoredProcess' ist. Ist dies nicht der Fall, wird eine Warnung ausgegeben und das Makro beendet.
Kopiert!
data _null_;
length type uri $256;
rc=metadata_pathobj("","&target",'StoredProcess',type,uri);
call symputx('cmtype',type,'l');
call symputx('stpuri',uri,'l');
run;
%if &cmtype ne ClassifierMap %then %do;
%put %str(WARN)ING: No Stored Process found at ⌖
%return;
%end;
%put %str(WARN)ING: No Stored Process found at ⌖
9
%return;
10
%END;
2 Codeblock
MACRO LOGIQUE
Erklärung : Dieser einfache Makrologik-Block bestimmt den Wert des festzulegenden Servertyps. Ist der `type`-Parameter 'WKS', wird die Makrovariable `newtype` auf 'Wks' gesetzt. Andernfalls wird sie auf 'Sps' gesetzt. Diese Variable wird später verwendet, um die XML-Zeichenfolge für die Metadatenaktualisierung zu erstellen.
Erklärung : Dieser zweite `DATA _NULL_`-Block ist das Herzstück der Aktualisierungslogik. Er iteriert über die dem URI des gespeicherten Prozesses (`stpuri`) zugeordneten Notizen mithilfe von `metadata_getnasn`. Er sucht speziell nach der Notiz mit dem Namen 'Stored Process'. Sobald diese gefunden wurde, wird die Funktion `METADATA_SETATTR` verwendet, um ihr Attribut 'StoredText' zu ändern. Dieses Attribut wird mit einer neuen XML-Zeichenfolge aktualisiert, die den `LogicalServerType` des gespeicherten Prozesses unter Verwendung der zuvor bestimmten Makrovariable `&newtype` definiert. Der Erfolg dieser Operation wird in der Makrovariable `result` gespeichert.
Kopiert!
data _null_;
length uri name value $256;
n=1;
do while(metadata_getnasn("&stpuri","Notes",n,uri)>0);
n+1;
rc=metadata_getattr(uri,"Name",name);
if name='Stored Process' then do;
rc = METADATA_SETATTR(uri,'StoredText'
,'<?xml version="1.0" encoding="UTF-8"?>'
!!'<StoredProcess><ServerContext LogicalServerType="'!!"&newtype"
!!'" OtherAllowed="false"/><ResultCapabilities Package="false" '
!!' Streaming="true"/><OutputParameters/></StoredProcess>');
if rc=0 then call symputx('result','SUCCESS');
stop;
end;
end;
run;
1
DATA _null_;
2
LENGTH uri name value $256;
3
n=1;
4
DO while(metadata_getnasn("&stpuri","Notes",n,uri)>0);
Erklärung : Dieser abschließende Block ist eine bedingte Makroanweisung, die eine Meldung im SAS-Protokoll anzeigt. Wenn die Makrovariable `result` den Wert 'SUCCESS' hat, wird eine Bestätigungsmeldung angezeigt, die angibt, dass der Servertyp des gespeicherten Prozesses geändert wurde. Andernfalls wird eine allgemeine Fehlermeldung ausgegeben, die ein Problem bei der Ausführung des Makros signalisiert.
Kopiert!
%if &result=SUCCESS %then %put NOTE: SUCCESS: STP &target changed to &type type;
%else %put %str(ERR)OR: Issue with &sysmacroname;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : Urheberrechtsinformationen werden in den referenzierten Dateien erkannt: 'Copyright (c) 2001-2006 Rodney Sparapani' (unter GNU General Public License) für _version.sas und 'Copyright 2010-2023 HMS Analytical Software GmbH, http://www.analytical-software.de' (Teil von SASUnit) für macro_without_brief_tag.sas. Diese Referenzen sind im Hilfeblock des Hauptmakros enthalten.
« Das Makro %mm_updatestpservertype demonstriert eine fortgeschrittene administrative Technik: die direkte Modifikation der Ausführungskonfiguration eines Stored Process. Obwohl die Beschreibung fälschlicherweise SAS Viya 4 erwähnt, nutzt der Code die für SAS 9.x spezifische Open Metadata Architecture (OMA). Durch die Manipulation des Attributs StoredText steuern Sie direkt, wie der Object Spawner die SAS-Engine instanziiert, um eine Benutzeranfrage zu bedienen.
Strategische Empfehlungen & Best Practices
WKS vs. STP (SPS): Die Wahl des Servertyps ist entscheidend für die Performance. Der WKS (Workspace Server) ist ideal für rechenintensive Aufgaben mit dedizierten Sitzungen, während der STP (Stored Process Server) einen Pool von Mehrbenutzersitzungen nutzt, was schnellere Antwortzeiten für häufige, leichtgewichtige Anfragen ermöglicht.
Das Risiko des Überschreibens von StoredText: Die Funktion METADATA_SETATTR injiziert hier eine fest codierte XML-Zeichenfolge. Achtung: Diese Methode überschreibt den gesamten Inhalt des Attributs. Falls Ihr Stored Process spezifische Konfigurationen besaß (z. B. spezielle Ergebnisfunktionen oder Eingabeparameter), gehen diese verloren. Ein Expertenansatz bestünde darin, das vorhandene XML zuerst zu lesen und nur das Attribut LogicalServerType gezielt zu ändern.
Metadaten-Persistenz: Im Gegensatz zu Änderungen über die SAS Management Console sind Modifikationen via METADATA_SETATTR sofort und dauerhaft im Repository wirksam. Führen Sie immer einen Metadaten-Export (SPK) des Objekts durch, bevor Sie Automatisierungsmakros ausführen, die Attribute verändern. »
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.