Utenti del database e accessi al server e mappatura tra di essi


9

Ho un'istanza di SQL Server 2008 R2 Express Edition a casa e un'altra su un server presso una sede client che sto usando per sviluppare un'applicazione usando Access come front-end. Questa applicazione ha 5 accessi separati che posso usare nella stringa di connessione (in base al gruppo di accesso in cui si trova l'utente). L'istanza home ha diversi database, alcuni dei quali non hanno nulla a che fare con queste applicazioni

Ho creato manualmente gli accessi in ciascuna istanza nel tempo (e probabilmente in un ordine diverso).

Spero di essere in grado (più di una volta) di eseguire un backup dal mio computer di casa del database su cui sto lavorando e caricarlo sull'istanza presso i client utilizzando il ripristino, spostando i file nel set di backup sull'attuale file utilizzati su questo server durante il processo di ripristino. Il pezzo che non capisco è la mappatura tra l'utente del database e il login.

Avevo pensato che la corrispondenza del nome dovesse essere sufficiente, ma nel tentativo di risolvere un problema su cui gli utenti del database ripristinato non sembravano essere associati all'accesso al server, mi sono imbattuto nell'istruzione ALTER USER Transact-SQL e in particolare il suo riferimento all'utilizzo di WITH LOGIN e alcune discussioni su un "SID".

Poiché (presumo) i nomi di accesso al server hanno SID di differenza in ciascuna istanza, significa che dopo aver caricato un backup tra istanze devo ricollegare la mappatura con una serie di comandi ALTER USER WITH LOGIN?

Risposte:


9

Loginso gli accessi al server esistono a livello del server SQL e quelli database usera livello del database. Non devono avere lo stesso nome, ma generalmente lo fanno. In un'istanza, non è possibile avere correttamente una funzione utente del database senza un corrispondente accesso al server SQL.

Diciamo che dispone di un'istanza: instanceA con un sever login userA sul computer. È possibile mappare questo utente login server A a un utente database: userA per un database DB_A . Entrambi sono chiamati userA , ma uno è il server logine uno è il database user. L'utente del database: userA risiede in DB_A . Quando si backup e ripristino DB_A da instanceA all'altro instanceB , l' utente del database: userA viene spostato, ma il login server: userA rimane ancora in instanceA. Per spostare gli accessi dall'istanza A all'istanza B, è possibile utilizzaresp_help_revlogin (fai clic per controllare la pagina KB) .

Se in precedenza è stato creato l'utente di accesso al server SQL A su istanza B , SQL proverà a mappare questo accesso con l'utente del database: utenteA, quando DB_A viene ripristinato da istanza A a istanzaB. In caso contrario, è possibile utilizzare la procedura sp_change_users_login (Fare clic per collegamento BOL) per correggere i mapping interrotti. Mi auguro questo chiarisca tutto.


Grazie - credo di avere i concetti giusti, ma sp_help_revlogin e sp_change_users_login e new e mi aiuteranno. Esplorerò di più. Grazie
akc42 il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.