BUG: sp_change_secondary_role non riuscita con errore 3101 se siano backup del log delle transazioni in attesa

Traduzione articoli Traduzione articoli
Identificativo articolo: 294397 - Visualizza i prodotti a cui si riferisce l?articolo.
BUG #: 352508 (SHILOH)
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

L'esecuzione di sp_change_secondary_role stored procedure sul server di standby di una coppia di distribuzione dei log esito un messaggio di errore 3101 se sono vere entrambe le seguenti condizioni:

  • Un valore pari a 1 viene passato per l'argomento @ terminare . Si noti che questo è anche il valore predefinito per questo parametro.
  • È almeno un log delle transazioni in sospeso da applicare a server di riserva.
Se si esegue il processo di RESTORE LOG sul server in standby utilizzando il xp_sqlmaint procedure estesa a questo punto, l'output è:
Database di origine - test
Database di destinazione - test
[Microsoft SQL-DMO (SQLState ODBC: 42000)]
Errore 3101: Accesso esclusivo [Microsoft] [driver ODBC SQL Server] [SQL Server] Impossibile ottenere perché il database è in uso.
[Microsoft][Driver ODBC SQL Server][SQL Server]RESTORE LOG è stato terminato in modo anomalo.
0 File caricati
NULL
Termine caricamento del piano SERVER1\INST1.test_logshipping

Server: Messaggio 22029, livello 16, stato 1, riga 0
Errore di sqlmaint.exe.

Cause

Se si desidera portare in linea il server secondario o di standby e distribuzione dei log è configurato tra due server, è possibile eseguire la procedura sp_change_secondary_role memorizzati sul server in standby per portare in linea il server secondario o di standby. Se si esegue la routine di sp_change_secondary_role memorizzati con i parametri predefiniti, la stored procedure esegue queste attività:

  • Imposta il database in standby in modalità utente singolo.
  • Copia i file aggiuntivi che potrebbero dover essere copiati.
  • Disattiva il processo di copia sul server in standby.
  • Ripristina tutti i registri delle transazioni in sospeso.
  • Porta in linea del database nel server secondario.
  • Esegue alcuni manutenzione su tabelle di piano di distribuzione nel database msdb perché tali informazioni a questo punto devono essere aggiornato dei log.
Se la routine sp_change_secondary_role memorizzato viene passata un valore di @ terminare = 1 (che è anche il valore di input predefinito per il parametro @ terminare ), elemento 1 nella sequenza precedente utilizza un
ALTER DATABASE dbname SET SINGLE_USER
comando per modificare lo stato del database e accertarsi che gli utenti non siano connessi durante il tentativo dell'operazione di ripristino. Tuttavia, l'istruzione ALTER DATABASE determina che accettano un blocco di database condiviso che rimane attivo finché non termina la connessione. Gli elementi 2 e 4 eseguiti utilizzando il xp_sqlmaint estesa di routine, che apre una connessione separata del server, pertanto procedura utilizza un id di processo server ( spid ) è diverso dallo spid della connessione sp_change_secondary_role originale. Di conseguenza, il blocco di database condiviso viene mantenuto l'attività di RESTORE LOG per i blocchi di spid stored procedure che xp_sqlmaint tenta di completare. Di conseguenza, la procedura sp_change_secondary_role ha esito negativo con un messaggio di errore 3101.

Workaround

Per evitare questo errore, utilizzare uno dei metodi descritti di seguito:
  • Assicurarsi che non siano Nessun registro delle transazioni in sospeso prima di eseguire la procedura sp_change_secondary_role memorizzati. Manualmente in esecuzione il processo di ripristino sul server secondario prima di eseguire sp_change_secondary_role assicura che non si Nessun registro delle transazioni in sospeso.

    - oppure -
  • Si potrebbe passare il valore pari a zero per il @ terminare parametro (@ terminate = 0) mentre si esegue la routine sp_change_secondary_role memorizzati. Tuttavia, l'utente deve verificare che non vi sono utenti connessi al database prima dell'esecuzione della stored procedure per garantire il corretto funzionamento di RESTORE LOG.

Status

Microsoft ha confermato che questo è un problema di SQL Server 2000.

Informazioni

sp_change_secondary_role è una procedura di sistema che è eseguita sul server in standby quando si desidera portare in linea il server standby.

RIFERIMENTI

Documentazione in linea di SQL Server; argomento: "Come impostare ed eseguire una modifica del ruolo (Transact-SQL) di distribuzione dei log"

Proprietà

Identificativo articolo: 294397 - Ultima modifica: venerdì 25 giugno 2004 - Revisione: 3.3
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Developer Edition
Chiavi: 
kbmt kbbug kbpending KB294397 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: 294397
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