In SQL Server, come posso creare un accesso per un utente esistente?


17

Ho ripristinato un database da un'istanza di SQL Server a un'altra istanza di SQL Server. Nel database sono già stati aggiunti utenti. Ma non hanno Login per la nuova istanza di SQL Server.

So come creare nuovi accessi per i nuovi utenti, ma come posso creare gli accessi per gli utenti esistenti?

Risposte:


9

Il problema è che il ripristino riporta gli utenti db dall'istanza del server originale ma la nuova istanza in genere non conosce nulla di tali accessi utente. Li vedrai in Sicurezza a livello di db, ma non hanno accessi a livello di server corrispondenti.

È necessario ricollegare gli utenti del database con accessi al server sull'istanza in cui è stato ripristinato il database.

Ci sono un paio di modi per farlo:

  1. Crea nuovi accessi per loro nella nuova istanza. Dovrai quindi rimuoverli come utenti del database nella nuova istanza e aggiungere i loro nuovi accessi. Ciò sembra strano dato che è possibile creare gli stessi nomi di accesso, ma gli SID (identificatori di sicurezza) saranno diversi e questo è ciò che SQL utilizza per l'identificazione dell'utente. Questo è abbastanza facile per uno o due accessi.

  2. Se si desidera mantenere gli stessi utenti, mantenendo gli stessi SID, su più istanze, utilizzare la procedura memorizzata sp_help_revlogin . Copiare il codice dal collegamento che creerà le procedure memorizzate necessarie ed eseguirlo sul server da cui si desidera copiare gli utenti. Genererà uno script SQL che puoi eseguire sul tuo server di destinazione per creare gli stessi utenti che trasportano SID, password, tutto. Questa è la strada da percorrere se hai molti utenti del database che devi riconnettere sull'istanza di destinazione o se non conosci le password per uno o più accessi SQL sull'istanza di origine.


10

Ho sempre eseguito lo sp_change_users_login di comando con l'azione 'update_one' a ri-link l'utente del database con l'accesso al server:

sp_change_users_login 'Update_One', 'database user', 'server login'


Fantastico l'ho usato: EXEC sp_change_users_login 'Auto_Fix', 'User', NULL, 'password';invece. :)
user2173353

Non è possibile farlo solo se si dispone sia dell'utente del database che del server ma il collegamento tra loro è interrotto?
wenzzzel,

2

Ecco cosa ho trovato.

Quando lo squillman è scaduto, gli utenti vengono copiati con il database, ma gli accessi no. Esiste una procedura di archivio denominata sp_change_users_login che è possibile utilizzare per risolvere il problema. I passaggi per farlo sono dettagliati in questo articolo . I dettagli sull'uso della procura del negozio sono disponibili in questa pagina .


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.