Consulta SQL - Filtrar campo através de outra coluna

Olá, pessoal.

Preciso de uma ajuda.

Tenho duas tabelas.
Tabela 1: Pessoas
Tabela 2: Eventos
Ambas possuem a chave: Pessoa_ID

A tabela 2 possui a seguinte estrutura:

Pessoa_ID | Pessoa_Nome | Evento
1 | João Silva | 1
1 | João Silva | 2
1 | João Silva | 3
1 | João Silva | 4
2 | Roberto Vieira | 1
2 | Roberto Vieira | 3
3 | Alex Carvalho | 1
3 | Alex Carvalho | 3
3 | Alex Carvalho | 4

O que eu preciso é o seguinte: que na minha consulta (a partir da tabela 1), não traga nenhuma pessoa que tenha o evento 2.
Ou seja, nesse caso em específico, não posso trazer o João Silva.

Através do “NOT IN” não dá certo. Ao fazer NOT IN = 2, o João continua vindo, pois ele também possui eventos diferentes de 2.

Tentei utilizar também o NOT EXISTS, conforme abaixo, porém não deu certo, o resultado veio NULO.
not exists (select * from Eventos E where E.Evento = 2).

Alguém tem alguma ideia?
Desde já, agradeço!

Especificamente com SQL Server eu não consigo te ajudar, mas eu achei uma query que, pelo menos, pode te dar uma luz.

CREATE TABLE Pessoas(
  Pessoa_ID INT AUTO_INCREMENT PRIMARY KEY,
  Pessoa_Nome VARCHAR(40)
);

CREATE TABLE Eventos(
  Pessoa_ID INT,
  Evento INT,
  FOREIGN KEY (Pessoa_ID) REFERENCES Pessoas(Pessoa_ID)
);

INSERT INTO Pessoas(Pessoa_Nome) VALUES ('João Silva'), ('Roberto Vieira'), ('Alex Carvalho');
INSERT INTO Eventos(Pessoa_ID, Evento)
VALUES (1, 1), (1, 2), (1, 3), (1, 4),
       (2, 1), (2, 3), (3, 1),
       (3, 3), (3, 4);

SELECT
  p1.Pessoa_ID,
  p1.Pessoa_Nome,
  e1.Evento
FROM Pessoas p1
JOIN Eventos e1 ON p1.Pessoa_ID = e1.Pessoa_ID
WHERE NOT EXISTS (
  SELECT 1
  FROM Eventos e2
  WHERE e2.Pessoa_ID = e1.Pessoa_ID AND e2.Evento = 2
);

Me baseei nesta resposta: https://dba.stackexchange.com/a/303708