Error: sp_change_secondary_role Fails with Error 3101 si hay copias de seguridad de registro de transacciones pendientes

Seleccione idioma Seleccione idioma
Id. de artículo: 294397 - Ver los productos a los que se aplica este artículo
Nº DE ERROR: 352508 (SHILOH)
Expandir todo | Contraer todo

En esta página

Síntomas

Ejecutar el sp_change_secondary_role procedimiento almacenado en el servidor de reserva de un par de trasvase de registros produce un mensaje de error 3101 si se cumplen las condiciones siguientes:

  • Se pasa un valor de 1 para el argumento @ terminar . Tenga en cuenta que también es el valor predeterminado para este parámetro.
  • Hay al menos un registro de transacciones pendientes que se aplicará en el servidor de reserva.
Si ejecuta el trabajo RESTORE LOG en el servidor de reserva utilizando el xp_sqlmaint procedimiento extendido en este momento, el resultado es:
Base de datos de origen - test
Base de datos de destino de prueba
[Microsoft SQL-DMO (SQLState ODBC: 42000)]
Error 3101: No se pudo obtener acceso exclusivo [Microsoft] [controlador ODBC para SQL Server] [SQL Server] porque la base de datos está en uso.
[Microsoft][ODBC SQL Server Driver][SQL Server]RESTORE LOG está finalizando anormalmente.
0 Archivos cargados
NULL
Carga finalizada del plan SERVER1\INST1.test_logshipping

Servidor: Msg 22029, nivel 16, estado 1, línea 0
Error en sqlmaint.exe.

Causa

Si se configura el trasvase de registros entre dos servidores y tiene que poner en conexión el servidor secundario o de suspensión, puede ejecutar el procedimiento sp_change_secondary_role almacenados en el servidor de reserva para poner en conexión el servidor secundario o de suspensión. Si ejecuta el procedimiento sp_change_secondary_role almacenados con los parámetros predeterminados, el procedimiento almacenado realiza estas tareas:

  • Establece la base de datos espera en modo de usuario único.
  • Copia los archivos adicionales que deben copiarse.
  • Deshabilita el trabajo de copia en el servidor de reserva.
  • Restaura los registros de transacciones pendientes.
  • Abre la base de datos en línea en el servidor secundario.
  • Realiza algún mantenimiento en el trasvase plan tablas en la base de datos msdb porque dicha información ahora necesita actualizarse.
Si el procedimiento sp_change_secondary_role almacenados se pasa un valor de @ terminar = 1 (que es también el valor de entrada predeterminado para el parámetro @ terminar ), el artículo 1 en la secuencia anterior utiliza un
ALTER DATABASE dbname SET SINGLE_USER
comando para cambiar el estado de la base de datos y asegúrese de que los usuarios no están conectados mientras se intenta la operación RESTORE. Sin embargo, la instrucción ALTER DATABASE hace que tomar un bloqueo de base de datos compartida que permanece en vigor hasta que finaliza la conexión. Los elementos 2 y 4 se realizan mediante el xp_sqlmaint procedimiento, que abre una conexión independiente con el servidor, por lo que estos pasos utilizan un identificador de proceso de servidor ( spid ) es diferente del spid de la conexión original de sp_change_secondary_role extendido. Como resultado, el bloqueo de base de datos compartida se mantenidos por los bloques de spid de procedimiento almacenado de la tarea RESTORE LOG que xp_sqlmaint intenta completar. Por lo tanto, el procedimiento sp_change_secondary_role produce un error con un mensaje de error 3101.

Solución

Para evitar este error, utilice uno de las siguientes soluciones:
  • Asegurarse de que no hay registros de transacciones pendientes antes de ejecutar el procedimiento sp_change_secondary_role almacenados. Ejecución manualmente el trabajo RESTORE en el servidor secundario antes de ejecutar sp_change_secondary_role garantiza que no son registros de transacciones pendientes.

    -o bien -
  • Podría pasar el valor de cero a la @ terminar parámetro (@ terminate = 0) mientras se ejecutan el procedimiento sp_change_secondary_role almacenados. Sin embargo, el usuario debe comprobar que no haya usuarios conectados a la base de datos antes de ejecuta el procedimiento almacenado para asegurarse de que RESTORE LOG funciona correctamente.

Estado

Microsoft ha confirmado que trata de un problema de SQL Server 2000.

Más información

sp_change_secondary_role es un procedimiento de almacenado del sistema que ejecute en el servidor de reserva cuando desea conectar el servidor de reserva.

REFERENCIAS

Libros en pantalla; tema: "Cómo configurar y realizar un cambio de función (Transact-SQL) trasvase de registros"

Propiedades

Id. de artículo: 294397 - Última revisión: viernes, 25 de junio de 2004 - Versión: 3.3
La información de este artículo se refiere a:
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Developer Edition
Palabras clave: 
kbmt kbbug kbpending KB294397 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 294397

Enviar comentarios

 

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