Cosa accade al backup del db se cambia PC?

domenica 21 febbraio 2010 - 04.24

ridaria Profilo | Expert

Cerco di esporre il quesito:

Ho un db su sql server 2008.

Tutte le tabelle di questo database sono associate ad un dato utente che non è sa di sql server.

Se percaso formatto il pc, o voglio portare questo database su di un altro pc ove c'è un altro sql server, cosa devo fare?

Devo creare su sql server di destinazione lo stesso utente, con stessa login e password, che avevo sul vecchio sql server e tutto fila liscio?


Oppure devo creare un nuovo utente ead andare tabella per tabella a riassociarle al nuovo utente che creo?

Grazie a tutti

Riccardo D'Aria
Riccardo D'Aria

lbenaglia Profilo | Guru

>Se percaso formatto il pc, o voglio portare questo database su
>di un altro pc ove c'è un altro sql server, cosa devo fare?
>
>Devo creare su sql server di destinazione lo stesso utente, con
>stessa login e password, che avevo sul vecchio sql server e tutto
>fila liscio?
>
>Oppure devo creare un nuovo utente ead andare tabella per tabella
>a riassociarle al nuovo utente che creo?

Ciao Riccardo,

Iniziamo col dire che esistono 2 tipi di utenze: le login e gli user account.
Le login si definiscono a livello di istanza e sono utilizzate per autenticarsi ad essa.
Gli user account si definiscono a livello di database, sono associati ad una login e su di essi si definiscono le permission sugli oggetti.
Quando esegui un full backup, verranno copiati anch'essi dato che fisicamente risiedono nella tabella sysusers presente in ogni database, quindi verranno mantenute tutte le permission sugli oggetti.
Le login essendo a livello di istanza (si trovano nella tabella syslogins nel master) non verranno backuppate insieme al tuo db.
Quindi, se pialli il server oppure esegui il restore su una istanza differente dovrai fare 3 cose:

1) Definire una o più logins sulla nuova istanza;
2) Eseguire il restore del db;
3) Riassociare ogni user account con la corrispettiva login (dato che il SID della login sarà sicuramente differente rispetto a quello d'origine).

Quest'ultima operazione può essere eseguita con il comando ALTER USER userName WITH LOGIN = loginName; oppure mediante la stored procedure di sistema sp_change_users_login:
http://msdn.microsoft.com/en-us/library/ms176060.aspx
http://msdn.microsoft.com/en-us/library/ms174378.aspx

>Grazie a tutti
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5