Publicado el :
Administración CREATION_INTERNE

Killsess - Terminación de sesión SAS Windows

Este código también está disponible en: Deutsch English Français
Attention : Este código requiere privilegios de administrador.
Esta macro está diseñada para entornos Windows (como Citrix) donde una sesión SAS© puede quedarse bloqueada. Permite finalizar otra sesión SAS© del usuario actual utilizando la utilidad de Windows 'taskkill'. Incorpora una seguridad para no terminar la sesión SAS© que ejecuta la macro (verificación del PID a través de &sysjobid).
Análisis de datos

Type : CREATION_INTERNE


El script no utiliza datos externos ni tablas SAS. Se basa completamente en la ejecución de comandos del sistema (CMD) a través de la instrucción X.

1 Bloque de código
MACRO DEFINITION
Explicación :
Definición de la macro y validación de parámetros. Verifica que el número de sesión (&sessno) sea un entero válido. Inicializa la variable local para los mensajes de error.
¡Copiado!
1%macro killsess(sessno);
2 %local err;
3 %let err=ERR%str(OR);
4 
5 %IF not %LENGTH(&sessno) %THEN %let sessno=1;
6 %ELSE %IF %LENGTH(%sysfunc(compress(&sessno,1234567890))) %THEN %DO;
7 %put &err: (killsess) You must specify an integer for the SESSION number sessno=&sessno;
8 %goto exit;
9 %END;
2 Bloque de código
SYSTEM COMMAND
¡Copiado!
1x taskkill /f /fi "USERNAME eq &sysuserid" /fi "PID ne &sysjobid" /fi "WINDOWTITLE eq SAS
2Session &sessno.*";
3 
3 Bloque de código
MACRO EXIT
¡Copiado!
1 %goto skip;
2 %exit: %put &err: (killsess) Leaving macro due to problem(s) listed;
3 %skip:
4%mend killsess;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : This is public domain software. No guarantee as to suitability or accuracy is given or implied. User uses this code entirely at their own risk. Author: Roland Rashleigh-Berry.


Banner
Consejo del Experto
Expert
Simon
Expert SAS et fondateur.
« La macro killsess aborda una de las frustraciones más comunes en entornos Windows compartidos (como Citrix o Escritorio Remoto): la sesión de SAS bloqueada o "congelada" que impide iniciar una nueva o consume recursos inútilmente. Al aprovechar la utilidad nativa de Windows taskkill, este script permite al usuario limpiar su propio espacio de trabajo sin necesidad de contactar con soporte técnico, manteniendo protocolos de seguridad críticos.

Recomendaciones y puntos clave
Seguridad del PID (Process ID): El uso de la variable macro automática &sysjobid es magistral. Al incluir el filtro /fi "PID ne &sysjobid", la macro evita "suicidarse" al intentar cerrar la propia sesión que está ejecutando el comando. Esto permite que el proceso de limpieza finalice correctamente y registre los resultados en el log.

Precisión en el filtrado: El filtrado combinado por USERNAME y WINDOWTITLE establece una red de seguridad de múltiples capas. Garantiza que no cierres accidentalmente la sesión de un compañero ni tampoco una instancia propia de SAS (por ejemplo, la "Sesión 2") que podría estar realizando un cálculo crítico en segundo plano.

Requisitos de administración: Como cualquier llamada al shell del sistema mediante la instrucción X, esta macro requiere que la opción de sistema XCMD esté habilitada. Además, al ser taskkill un ejecutable específico de Windows, esta macro fallará en entornos basados en Linux o SAS Viya, donde debería adaptarse usando comandos como kill o pgrep. »