Es NO posible y todas las afirmaciones en contrario son aceite de serpiente.
Si bien es cierto que puede verificar el nombre de la aplicación y crear activadores de inicio de sesión que nieguen los inicios de sesión en función de esta propiedad, el nombre de la aplicación no es una propiedad segura y cualquiera puede falsificarlo fácilmente. Confíe en él para seguridad (es decir, denegación de inicio de sesión) es #fail.
Entonces, siempre que baje la barra y elimine términos como 'denegar acceso' de su pregunta, es posible proporcionar un Activador de inicio de sesión
que inspecciona el program_name
de la sesión en sys.dm_exec_sessions
:
CREATE TRIGGER application_limit_trigger
ON ALL SERVER WITH EXECUTE AS '...'
FOR LOGON
AS
BEGIN
IF EXISTS (SELECT *
FROM sys.dm_exec_sessions
WHERE session_id = @@SPID
AND program_name IN (N'Bad Program', N'Worse Program', N'Unmentionable')
ROLLBACK;
END;
Algunas aplicaciones establecen program_name, no sé si el paquete de Office establece esta propiedad en algo útil o la deja predeterminada. Y tienes que entender que esto puede ser eludido por cualquiera simplemente cambiando el Nombre de la aplicación propiedad en la cadena de conexión.