Spesso capita di ripristinare su un nuovo server un database proveniente da un altro server, attraverso un restore o un attach.
Se per ragioni applicative il database da ripristinare contiene degli utenti (Users) diversi da quelli di default, ci si trova nella situazione in cui gli utenti definiti nella sezione generale Login di SQLServer sulla nuova macchina non corrispondono a quelli definiti nel database.
Mi e' capitato di trovarmi in questa situazione e ripristinando manualmente gli utenti nella sezione Login e tentando l'associazione al database si ottiene un messaggio di errore ("user already exists" o qualcosa del genere).
La soluzione è questa:
-
ripristnare il database normalmente
-
create gli utenti manualmente nella sezione Security/Logins
-
aprite un query analyzer puntato sul database ripristinato
-
per ciascun utente lanciate la store procedure di sistema: sp_change_users_login 'update_one', nomeutente, nomeutente
In questo modo la login viene associata correttamente all'utente del database.