Frapper les utilisateurs SAS par programme

Est-il possible de couper les connexions des utilisateurs vers un serveur SAS par programmation à partir du serveur? Je sais que je peux tuer des processus SAS individuels en utilisant des outils Windows standard tels que le Gestionnaire des tâches lorsque je dispose d’une connexion de bureau à distance au serveur, mais cela peut-il être fait par programmation?

La situation est la suivante:

Nous avons une installation SAS 9.4 sur un serveur Windows Server 2008 R2. Il y a un tas de dossiers sur le serveur avec des tables SAS et un groupe d’utilisateurs finaux qui utilisent ces tables SAS via SAS Enterprise Guide (qui a été installé sur leurs ordinateurs de bureau). Maintenant, il y a aussi une grande exécution par lots SAS, que nous exécutons chaque jour pour mettre à jour toutes les tables SAS. Nous souhaitons nous assurer qu’aucun utilisateur ne dispose de tables SAS ouvertes via EG lorsque l’exécution par lots est en cours. sinon, cela pourrait échouer car une table est verrouillée. Bien sûr, le traitement par lots est généralement effectué de nuit, mais comme son calendrier dépend de nombreuses autres choses, nous ne pouvons pas être certains à 100% qu’il est terminé avant que les employés ne viennent travailler.

Ce que nous voulons, c’est une sorte de script ou de paramètre SAS qui nous permettrait de couper automatiquement les connexions SAS de tous les utilisateurs avant que l’exécution par lots ne démarre, de les autoriser à se reconnecter une fois l’exécution du lot terminée.

Tout conseil serait apprécié!

Edit : Serait-il possible d’écrire un script cmd en utilisant taskkill qui empêcherait tous les processus sas.exe de s’exécuter sous un autre utilisateur que celui en cours? Est-ce que SAS crée même un processus sas.exe sur le serveur pour chaque utilisateur dans ce cas?

    Vous pouvez utiliser les commandes SYSTASK ou X dans (Windows) ou (UNIX) . Mon processus d’extraction, de transformation et de chargement (ETL) s’exécute dans l’environnement UNIX et SYSTASK est une aide précieuse pour les raisons invoquées. Je crée les ensembles de données avec SAS, puis utilise la commande mv (UNIX) pour remplacer l’dataset existant. Le système de fichiers remplacera le verrou SAS.

    Comme vous l’êtes dans la version 9.4, je suggère que votre bibliothèque soit convertie en une bibliothèque en lecture seule, liée aux métadonnées . Cela devrait empêcher les verrous de table et éviter de devoir fermer les sessions utilisateur (avec un impact potentiel sur leur productivité en raison de la perte de tables de travail / variables de macro, etc.)

    Rechercher dans SAS / Share. Si ce n’est pas une option, alors deux idées laides sont:

    1. Si les utilisateurs se connectent en utilisant les instructions libname à un partage Windows, vous pouvez simplement désactiver le partage. Puis réactivez-le. Cela pourrait facilement être fait en utilisant les instructions de ligne de commande et la commande x .

    2. S’ils se connectent via un service SAS, arrêtez le service et redémarrez-le. Encore une fois, cela peut être fait via la ligne de commande et x .

    Après avoir fait l’un ou l’autre des deux. Assurez-vous que la première chose qui se passe est que vous émettez un lock ; déclaration pour vous assurer que personne ne peut utiliser ces tables à nouveau tant que vos tâches ne sont pas terminées. Vous pouvez ensuite redémarrer le service / réactiver les partages.

    Une fois que vous avez terminé, assurez-vous que la session SAS qui a émis la commande de locking est fermée ou efface le verrou.