Newsgroup: it.comp.software.database
Titolo: [?] Restore e perdita accessodegli utenti.

Domanda forse banale, ma....
Ho un programma che deve esportare il DB su altri computer non in linea.
Per funzionare al massimo con le store procedure, senza dare permessi di
accesso particolari
Ora il DB si chiama
"Operazioni"
Ho creato un ruolo per il DB chiamato
"OperazioniVolo"
Ho quindi creato due utenti:
"OperazioniX" e "Prog"
OperazioniX ha accesso al DB con tutti i ruoli ammissibili (sia del Server
che del DB), ma non fa parte del ruolo OperazioniVolo.
Prog invece fa parte solo dei ruoli db_backupoperator, public ed
OperazioniVolo.
Ora il mio programma, per esportare il DB crea un backup, lo registra su
file e poi lo copia zippato su disco (chiave USB date le dimensioni).
Un programma identico, ma settato per fungere da client, prende questo file,
lo scompatta e ripristina il DB.
Ora fin qui tutto ok, ma una volta ripristinato.....
Gli utenti OperazioniX e ProgVolo sono riconociuti nel DB Operazioni, ma non
come login di accesso.
Se provo ad inserirli direttamtne via EM, mi viene detto che il login esiste
già, ma in realtà è visibile solo nel DB Operazioni.
LAtra cosa strana è che ..... se clicco sulle autorizzazioni di Operazioni e
di Prog... non hanno più accesso al db Operazioni, anzi l'utente OperazioniX
ha accesso a tutto tranne che al db Operazioni, che è quello di cui ho fatto
il restore.
Insomma quando faccio il restore via SQLDMO (programma VB), mi trovo il db
correttametne aggiornato, gli utenti inseriti correttamente nel DB, peccato
che siano stati cancellati i relazitiv login dal server e quindi non riesco
più ad accedere al DB.
Come posso fare per ovviare alla cancellazione dle login?
Lo so che posso eliminare via SQLDMO oppure sotreprocedures gli utenti dal
DB, ricreare i login e poi ricreare gli utenti nel DB, ma mi sembra assurdo
che debba fare ogni volta una cosa del genere.
E' solo questa la soluzione oppure esiste una qualche impostazione
partivolare per ovviare a tale assurdità?

 Domanda forse banale, ma....
Quando ripristini un database su un altro server, il backup porta con se le 
informazioni sugli user (coloro che hanno permessi di accesso al database) e 
sulle permission che gli user hanno su ciascun oggetto di database. Le 
informazioni sui login (coloro che accedono a SQL Server), invece, sono 
mantenute nel database master.
Portando un database (ed i relativi user) su un nuovo server viene "rotto" 
il legame tra login e user.
Per riallineare un login al rispettivo user in un determinato database devi 
utilizzare l'istruzione sp_change_users_login come documentato sul Books 
OnLine di SQL Server...
Bye
-- 
Luca Bianchi
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org

 OnLine di SQL Server...
Ok, controllerň e grazie, comunque non avevo trovato nulla sul BOL riguardo
questo caso, ne sui 3 libri che ho su MSSQLServer, ne su google.
Peccato che non venga specificato che spostando un DB tramite backup.....
succede questo, si aprla generalmente di repliche e di creazione di database
nuovi, ma non ho mai letto nulla riguardo al ripristino di DB su DB dallo
stesso nome con gli stessi utenti.
Grazie


 google.
Per quanto riguarda il BOL ti ho già detto che sotto la voce 
sp_change_users_login (che quindi NON è una stored procedure non 
documentata) trovi sufficiente documentazione e d'altronde conoscendo 
l'architettura della security di SQL Server il comportamento è del tutto 
prevedibile.
I 3 libri che hai non dici quali sono e non posso dare quindi un giudizio 
(che sarebbe puramente soggettivo) sulla loro bontà.
La ricerca su google... dipende come l'hai fatta... Sul newsgroup 
microsoft.public.it.sql era una FAQ, adesso sembra che tutti gli utenti di 
quel ng sappiano la cosa, ma da una ricerca mirata dovrebbe uscire qualche 
vecchio thread...


 Bye
Bye e grazie.
BTW non è polemica la mia, ma una .... puntualizzazione.
Grazie ancora per le pronte e precise risposte.
BTW se ti servono notizie su aerei chiedi pure, li ne so molto ma molto di
più che di programmazione (se non fosse così........ sarei già sprecipitato
variate volte)


 già sprecipitato variate volte)
:-))
Bye


 costruire una "discussione costruttiva"...
Rileggendo il mio post ..... ho letto più polemica che altro, scusa.

 Rileggendo il mio post ..... ho letto più polemica che altro, scusa.
Don't worry... se avessi inteso il post in maniera polemica probabilmente 
non sarei qui a risponderti... ;-)


 maniera riduttiva
Ecco il casino, cercavo nel BOL di SQL, ieri mi sono messo a curiosare nella
directory di SQL e ........ diamine una miriade di BOL nella directory:
DEVTOOLS......... scusate, ma finora stavo usando solo il manuale online di
SQLServer, quindi traducevo tutte le chiamate SQL in comandi con connessioni
internet... sono una ciofeca su queste cose, chiedo venia.


 cani (terranova) 
Cappero complimenti ! Dove trovi il tempo per dedicarti in modo non
superficiale (lavorare con VB + SQL Server richiede un impegno maggiore del
semplice hobbysta) alla programmazione ? Se non erro il lavoro di  pilota
prevede assenze, stress e stanchezza...
Ciao !
Stefano "HappyMan" (Lake Maggiore - Italy) (affascinato dal tuo lavoro,
ogni volta che salgo su un aereo do sempre una sbirciata alla cabina di
pilotaggio :-)
-- 
Database Gate - The Powerful SQL Editor ODBC based
http://www.sgr.info
Email happyman69 (at) 
libero.it