Come risolvere i problemi di autorizzazione quando si sposta un database tra server che eseguono SQL Server

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

In questa pagina

Sommario

In questo articolo viene descritto come associare gli accessi standard e integrati per risolvere problemi di autorizzazione quando si sposta un database tra server che eseguono SQL Server.

Informazioni

Quando si sposta un database da un server che esegue SQL Server a un altro server che esegue SQL Server, pu˛ verificarsi una mancata corrispondenza tra i numeri di identificazione di protezione (SID) degli account di accesso nel database master e gli utenti nel database utente . Per impostazione predefinita, SQL Server 7.0, SQL Server 2000 e SQL Server 2005 offrono la stored procedure sp_change_users_login stored procedure di sistema per mappare gli utenti non corrispondenti. Tuttavia, Ŕ possibile utilizzare la stored procedure sp_change_users_login stored procedure solo per associare gli account di accesso di SQL Server standard e occorre eseguire questi mapping per un utente alla volta. Per ulteriori informazioni la stored procedure sp_change_users_login stored procedure, vedere l'argomento di "sp_change_users_login" in SQL Server 7.0, SQL Server 2000 e documentazione in linea di SQL Server 2005 (informazioni in lingua inglese).

In SQL Server 7.0 o versioni successive, Ŕ possibile gestire il mapping tra gli account di accesso nel database master e gli utenti nel database utente utilizzando i SID. Questo mapping sono necessarie per gestire autorizzazioni corrette per gli account di accesso nei database dell'utente . Quando questo mapping viene perso, gli account di accesso sono i problemi di autorizzazione che includono ma non sono limitate al seguente:
  • Se l'account di accesso SQL Server non Ŕ presente nel nuovo server, e l'utente tenta di accedere, Ŕ necessario che l'utente analogo il seguente messaggio di errore:
    Server: Messaggio 18456, livello 16, stato 1
    Impossibile eseguire l'accesso per l'utente '% 1!'.
  • Se l'account di accesso SQL Server esiste sul nuovo server, ma il SID nel database master Ŕ diverso dal SID nel database utente , l'utente pu˛ accedere a SQL Server correttamente; tuttavia, la quando si tenta di accedere ai database, l'utente analogo il seguente messaggio di errore:
    Server: Messaggio 916, livello 14, stato 1, riga1
    L'utente del server ' %. * ls 'non Ŕ un utente valido nel database' %. * ls'.
    Nota In SQL Server 2005, Ŕ potrebbe essere che l'utente visualizzato il seguente messaggio di errore:

    Utente di server '% s' non Ŕ un utente valido nel database '% s'. Aggiungere innanzitutto l'account utente nel database.
Per ulteriori informazioni sul modello di protezione per SQL Server 7.0, vedere il white paper "Microsoft SQL Server 7.0 Security". Per visualizzare il white paper, il seguente sito Microsoft Web:
http://msdn2.microsoft.com/en-us/library/Aa226173(SQL.70).aspx
Per ulteriori informazioni sul modello di protezione per SQL Server 2000, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
322712Procedure consigliate e funzionalitÓ di protezione di S322712 di Microsoft SQL Server 2000

Restrizioni

  • Se sono presenti gli utenti proprietari degli oggetti nella tabella sysusers senza un prefisso del nome computer o il nome di dominio, e questi oggetti citati nel applicazioni utilizzando il nome in due parti del username. objectname, l'applicazione potrebbe interrompersi poichÚ la procedura sp_sidmap memorizzati Rinomina gli utenti con il prefisso del nome di dominio o nome computer come appare nella tabella sysxlogins . Per ovviare al problema, dopo il sp_sidmap stored procedure Ŕ stata completata, rinominare gli utenti che sono interessati nella tabella sysusers ai loro nomi precedente oppure contattare il provider del servizio di supporto.
  • In questo articolo non verrÓ considerati gli alias. ╚ necessario gestire manualmente gli alias.
  • Se non esiste un account di accesso standard di SQL Server sul nuovo server SQL Server, Ŕ possibile aggiungere l'account di accesso con una password NULL. Potrebbe essere necessario modificare di conseguenza la password per tali account di accesso.
  • Se un utente Ŕ stato creato nel database utente con un nome che Ŕ diverso da quello visualizzato nella tabella sysxlogins , non Ŕ possibile conoscere il corrispondente account di accesso per tale utente. Pertanto, prima di eseguire il sp_sidmap stored procedure:
    1. Consente di trasferire tutti gli oggetti cui l'utente appartiene a un database dell'area di gestione temporanea.
    2. Eliminare l'utente, aggiungere l'utente con il nome corretto, e quindi trasferire tutti gli oggetti per questo utente.
  • Se un utente dispone di un account di accesso corrispondente, nÚ un prefisso del nome computer locale o il nome di dominio, Ŕ visualizzato un messaggio per l'utente. Questo messaggio indica che Ŕ necessario prima aggiungere l'utente a livello di Windows e aggiungerlo a SQL Server come account di accesso. Dopo avere effettuato questa operazione, Ŕ necessario eseguire nuovamente la procedura sp_sidmap memorizzati.
  • Se un utente ha un prefisso del nome di dominio o il nome del server di Windows locale, ma il corrispondente account di accesso non esiste nella tabella sysxlogins , la stored procedure tenta di aggiungere questo come un nuovo account di accesso a SQL Server. Se l'utente di Windows non esiste, genera un messaggio di output nella finestra dei risultati e manualmente crea l'account di accesso dopo il primo viene aggiunto l'utente di Windows.
  • Se Ŕ presente pi¨ di un accesso per un utente nella tabella sysusers , viene visualizzato un messaggio di output nel file di risultati e vengono elencati tutti gli accessi che hanno lo stesso nome utente. A questo punto, deve intervenire manualmente per assicurarsi che l'utente corrisponde a un solo account di accesso.

    esempio Se la tabella sysusers dispone di un utente denominato "FrancoVerdi" e la tabella sysxlogins dispone di account di accesso con nomi, come "Test\johndoe" e "Test2\johndoe" quando si esegue la stored procedure, si riceve un messaggio indicante che uno degli utenti dispone di pi¨ account di accesso e che l'amministratore del sistema deve scegliere una. Questo Ŕ il tempo solo che Ŕ necessario eseguire la seconda stored procedure, sp_prefix_sysusersname , fornito in questo articolo. Inoltre, questa situazione Ŕ descritto in dettaglio nel file Readme.txt.

Associare gli accessi standard e integrati

Dopo aver spostato un database da un server che esegue SQL server a un altro server che esegue SQL server, attenersi alla seguente procedura per l'intervento dell'utente minima:

SQL Server 7.0 e SQL Server 2000

  1. Assicurarsi che vi sia un account di accesso nella tabella sysxlogins nel database master per ciascun utente nella tabella sysusers del database.

    Nota Per aggiungere un account di accesso standard di SQL Server, vedere l'argomento di "sp_addlogin" nella documentazione in linea di SQL Server. Per aggiungere un account di accesso integrata di SQL Server, vedere l'argomento di "sp_grantlogin" nella documentazione in linea di SQL Server.
  2. Scaricare il file MapSids.exe ed estrarre i file Sp_sidmap.sql e Readme.txt.
  3. Accedere al server che esegue SQL Server come amministratore di sistema e quindi eseguire il file Sp_sidmap.sql nel database utente. Esecuzione del file Sp_sidmap.sql creazione di due stored procedure, sp_sidmap e sp_prefix_sysusersname .
  4. Assicurarsi che il database non Ŕ accessibile da un altro utente rispetto a quello che esegue le stored procedure.
  5. Assicurarsi che Query Analyzer Visualizza risultati in formato testo e non in formato griglia. Per effettuare questa operazione, premere il CTRL ^ T tasti, o fare clic su query , quindi risultati in testo . Questo Ŕ molto importante in modo che Ŕ possibile visualizzare i risultati e i messaggi informativi in una finestra e salvare l'output in un file di testo. Potrebbe essere necessario il file in un secondo momento per risolvere alcuni dei mapping.
  6. PoichÚ non Ŕ possibile verificare se i parametri vengono passati correttamente, assicurarsi di passare correttamente alla routine sp_sidmap memorizzati:
    EXEC sp_SidMap @old_domain = old_domain_name,
    @new_domain = new_domain_name,
    @old_server = old_server_name,
    @new_server = new_server_name
    sostituire i valori per i nomi di dominio vecchi e nuovi e i nomi dei server in modo appropriato.
  7. Salvare i risultati in un file e seguire le istruzioni vengono forniti nel file Readme.txt.

    Nota Quando si eseguono tali stored procedure, la tabella di sysusers Ŕ l'unica tabella che viene modificato nel database. Per tornare questa opzione in uno stato in cui Ŕ stato avviato, ripristinare il database dal backup o ricollegare il database.

SQL Server 2005

Se si esegue SQL Server 2005, utilizzare la clausola di LOGIN WITH dell'istruzione ALTER USER per riassociare un utente di un nuovo account di accesso. Per ulteriori informazioni, visitare il seguente sito Web MSDN (informazioni in lingua inglese):
http://msdn.microsoft.com/en-us/library/ms176060.aspx
Nota Per utilizzare la clausola WITH LOGIN dell'istruzione ALTER USER , Ŕ necessario applicare SQL Server 2005 Service Pack 2.

Riferimenti

Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
274188L'argomento "Risoluzione dei problemi degli utenti isolati" nella documentazione in linea non Ŕ completo
246133Trasferimento di accessi e password tra istanze di SQL Server
168001Errori di accesso e/o di autorizzazioni utente dopo il ripristino del dump
298897ESEMPIO: Mapsids.exe consente mappa SID tra utente e il database master quando viene spostato un database

ProprietÓ

Identificativo articolo: 240872 - Ultima modifica: martedý 27 gennaio 2009 - Revisione: 8.0
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Chiavi:á
kbmt kbhowtomaster KB240872 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: 240872
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