Msg 15157, Level 16, State 1, Line 1
Setuser failed because of one of the following reasons: the database principal ‘%.*ls’ does not exist, its corresponding server principal does not have server access, this type of database principal cannot be impersonated, or you do not have permission.
This error message appears when you try to use SETUSER with an unknown user.
The T-SQL statement can be parsed, but causes the error at runtime.
Errors of the Severity Level 16 are generated by the user and can be fixed by the SQL Server user. The statement cannot be executed this way. The user you want to use with SETUSER must be known prior to execution to SQL Server.
All versions of SQL Server.
In the above example we try to use SETUSER with the user ‘abc’. Because this user is not known to the system, the error is raised.