Haven't had this issue - but when I update an existing user email directly in the db, I do like this:
1 - Update the "Email" field in the yaf_User table...
2 - Update the "Email" and "EmailLwd" fields in the yaf_prov_membership table...
I always use lower-case in the email addresses in all fields.
Since the user profile dialog email update did not work so well in 1.9.x.x, I've done this many many times...
Don't know if it's fixed in 2.x since I haven't had any requests from users to change their email.
Same goes for changing a user name, update both tables.
If you get errors, you most likely have duplicate emails in the db and that is as designed with unique primary keys, since you should
not have 2 users with the same email address...
I am not running DNN, so maybe my comments are not valid at all in this particular case...
He who asks a question is a fool for five minutes. He who does not ask a question remains a fool forever. [Old Chinese Proverb]