La stored procedure sp_addrolemember viene utilizzata in SQLServer 2005 per aggiunge un utente del database, un ruolo del database, un account di accesso di Windows o un gruppo di Windows ad un ruolo di database per il database aperto nel contesto corrente.
Peccato che non esista un controllo per impedire al chiamante di eseguire la procedura su se stesso. Per evitare questo spiacevole inconveniente è necessario indicare a SQLServer di considerare attendibile il database in oggetto attraverso il seguente script sql:

ALTER DATABASE dbname SET TRUSTWORTHY ON

Quando il database è impostato su TRUSTWORTHY ON non è però possibile eseguire l’impersonate di un altro utente, se ne abbiamo la necessità dobbiamo prima impostare TRUSTWORTHY ad OFF come nell’esempio seguente:

EXECUTE AS LOGIN = 'login1';
GO
--Set TRUSTWORTHY OFF
ALTER DATABASE dbname SET TRUSTWORTHY OFF
GO
EXECUTE AS USER = 'user2';
--Execution context set to user2
GO
--Set TRUSTWORTHY ON
ALTER DATABASE dbname SET TRUSTWORTHY ON
--Reset the execution context to the previous context
REVERT;
GO

Nota: Per impostare questa opzione, è necessario essere un membro del ruolo sysadmin.