Gli accessi degli utenti e autorizzazioni in un database potrebbero essere non corrette dopo il ripristino del database

Traduzione articoli Traduzione articoli
Identificativo articolo: 168001 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

Sintomi

Se un dump di database utente SQL Server viene ripristinato su un diverso SQL Server, ad esempio un server di backup in funzione, o sullo stesso SQL Server dopo aver ricostruito o ricaricato una versione meno recente del database master, gli accessi e le autorizzazioni utente per il database potrebbero risultati errati.

Questo problema pu˛ presentarsi in varie situazioni:
  • Durante l'accesso a un server 6.x Ŕ possibile che venga visualizzato il seguente errore:
    Msg 4002, livello 14, stato 1, Server Microsoft SQL Server, la riga 0
    Accesso non riuscito
    DB-Library: Accesso non corretto.
  • Durante l'accesso a un server 7.0 Ŕ possibile che venga visualizzato il seguente errore:
    Messaggio 18456, livello 14, stato 1,
    Impossibile eseguire l'accesso per l'utente '% 1!'.
  • Durante il tentativo di accesso a oggetti contenuti nel database, Ŕ possibile che venga visualizzato il seguente errore:
    Msg 229, livello 14, stato 1
    autorizzazione di %s negato in oggetto %. * s, database %. * s, proprietario %.*s
  • Durante il tentativo di creare e concedere accesso al database ripristinato o di aggiungere un utente a tale database, Ŕ possibile che venga visualizzato il seguente messaggio:
    Microsoft SQL-DMO (SQLState ODBC: 42000) Errore 15023: utente o il ruolo '% 1!' esiste giÓ nel database corrente.
  • ╚ possibile che gli utenti dispongano di autorizzazioni per oggetti per i quali in precedenza non disponevano di alcuna autorizzazione.

Cause

Le informazioni di accesso utente vengono memorizzate nella tabella syslogins del database master. Cambiando server o modificando queste informazioni tramite la ricostruzione o il ripristino di una versione precedente del database master, le informazioni potranno risultare diverse da quelle esistenti al momento in cui Ŕ stato creato il dump del database utente. Se non esistono accessi per gli utenti, quando questi ultimi tenteranno di accedere al server riceveranno un errore di accesso non riuscito. Se invece esistono accessi utente, ma i valori SUID (per la versione 6.x) o i valori SID (per la versione 7.0) presenti nella tabella master..syslogins differiscono da quelli della tabella sysusers del database utente, Ŕ possibile che vengano assegnate agli utenti autorizzazioni diverse rispetto a quelle previste nel database utente.

Nota Se si utilizza Microsoft SQL Server 2005, nella tabella syslogins e la tabella di sysusers vengono implementati come visualizzazioni di compatibilitÓ. Queste visualizzazioni sono sys.syslogins e sys.sysusers . Per ulteriori informazioni sulle visualizzazioni di compatibilitÓ, vedere l'argomento di "Viste di compatibilitÓ (Transact-SQL)" nella documentazione in linea di SQL Server 2005.

Workaround

Per aggirare il problema, eseguire una delle seguenti operazioni:
  • Se sono disponibili gli script correnti per aggiungere accessi, utenti e autorizzazioni, rimuoverli e ricrearli da script. Per esempi di utilizzo di script per trasferire account di accesso tra server, vedere il seguente articolo della Microsoft Knowledge Base:
    246133HOW TO: Trasferimento di accessi e password tra istanze di SQL Server
    240872Come risolvere problemi di autorizzazione quando viene spostato un database tra SQL Server
  • ╚ possibile utilizzare la stored procedure sp_change_users_login per ricreare la relazione tra le tabelle syslogins, sysusers e sysalternates. Tuttavia, la routine rende le stime migliore su collegamenti e potrebbe consentire a un utente maggiori privilegi di accesso rispetto a quello previsto. Esecuzione della procedure con l'opzione report prima per generare un elenco di utenti che verrÓ modificato. In seguito si consiglia di verificare che tali utenti dispongano di autorizzazioni appropriate. e che la stored procedure sp_change_users_login non risolva problemi di autorizzazioni derivanti da accessi e utenti creati in un diverso ordine nel database in cui Ŕ stata ripristinata la copia di backup.
  • Prima di caricare il database utente ripristinare un dump del database master contemporaneo al dump del database utente sul server. In questo modo si garantirÓ che tutte le informazioni utente presenti nel database utente corrispondano esattamente a quelle contenute nella tabella syslogins del database master.

    avviso : il database master contiene informazioni a livello di server e ha effetto su tutti i database del server. Ripristinando il database master Ŕ possibile incontrare altri ID utente e/o database andati perduti o che dispongono di autorizzazioni non corrette. Qualsiasi modifica apportata al master da quando Ŕ stato eseguito il backup andrÓ perduta. Utilizzare questo metodo solo se si Ŕ certi che la versione del backup del database master contiene informazioni accurate per il database utente in questione e per tutti gli altri database sul server.
  • Utilizzare Transfer Manager (per 6.x) o DTS (per 7.0) per copiare gli accessi. Le password non verranno trasferite utilizzando questo metodo.
  • Contattare il fornitore del supporto principale.

ProprietÓ

Identificativo articolo: 168001 - Ultima modifica: martedý 28 marzo 2006 - Revisione: 5.3
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 6.0 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Chiavi:á
kbmt kbprb kbusage KB168001 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 168001
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com