Det är INTE möjligt och alla påståenden om motsatsen är ormolja.
Även om det är sant att du kan kontrollera applikationsnamnet och skapa inloggningsutlösare som nekar inloggningar baserat på den här egenskapen, är applikationsnamnet inte en säker egenskap och kan lätt förfalskas av vem som helst. Lita på det för säkerhet (dvs. nekad inloggning) är #fail.
Så så länge du sänker ribban och tar bort termer som "neka åtkomst" från din fråga, är det möjligt att tillhandahålla en Inloggningsutlösare
som inspekterar sessionens program_name
i 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;
Programnamnet ställs in av vissa applikationer, jag vet inte om Office-paketet ställer in den här egenskapen till något användbart eller lämnar den som standard. Och du måste förstå att detta kan kringgås av vem som helst genom att helt enkelt ändra ApplicationName egenskap i anslutningssträngen.