Concurrencia nuevo y programación diagnósticos se han agregado a SQL Server

Seleccione idioma Seleccione idioma
Id. de artículo: 319892 - Ver los productos a los que se aplica este artículo
Nº DE ERROR: 102179 (SQLBUG_70)
Nº DE ERROR: 356317 (SQLBUG_80)
Expandir todo | Contraer todo

En esta página

Resumen

Permanecen muy dinámicos, SQL Server contiene varios procesos internos para garantizar la estabilidad. Un ejemplo es el monitor de bloqueo que puede utilizar para identificar y resolver situaciones de interbloqueo.

Service Pack 4 (SP4) de SQL Server 7.0 y SQL Server 2000 Service Pack 3 (SP3) agregados mejorado el proceso de supervisión de estado. Mejoras de supervisión de estado han tenido lugar en las áreas siguientes:
  • Bloqueo
  • Problemas de red
  • Entrada/salida (E/S)
  • Memoria
  • CPU
Cuando SQL Server detecta problemas de salud, una serie de nuevos mensajes de error, como la siguiente, se registran en el registro de error de SQL Server. Para obtener detalles acerca de estas condiciones mensaje de error, consulte el "más información" sección de este artículo.

SQL Server 7.0

Error 1223: Identificador de proceso % d: % d no se puede adquirir el bloqueo "% s" en el recurso %s porque existe un posible interbloqueo en %d de programador para el recurso. Proceso ID % d: % d mantiene un bloqueo "% h" en este recurso.

SQL Server 2000

Error 1229: Identificador de proceso % d: % d posee recursos que están bloqueando los procesos en % d de programador.
Los mensajes de error nuevo contienen la siguiente serie.

extendido de detección de bloqueo: 1223, 1229
detección de programador bloqueada: 17881, 17883
bloqueada de todos los programadores detección: 17882, 17884
Advertencia Tenga en cuenta que un problema de estado relacionado con frecuencia es el resultado de una condición que se ha experimentado anteriormente. Debe estudiar el registro de error de SQL Server y los registros de sucesos del sistema con cuidado para determinar la causa real.

Por ejemplo, un mensaje de error 17883 puede indicar un problema de programador. Sin embargo, el registro de errores puede mostrar una excepción anterior que dejó incorrectamente el proceso de SQL Server en un estado deficiente o la aplicación puede deberse a una condición de bloqueo grave.
Nota Microsoft intenta mantener todo el contenido actualizado con las condiciones de 17883 más recientes. Sin embargo, el 17883 mensaje de error es un mensaje de detección de estado puede ser desencadenado por muchos motivos. Microsoft no sólo ha corregido problemas conocidos con el producto software, pero también ha encontrado el error 17883 en una variedad de situaciones que está relacionado con el software de SQL Server. Por ejemplo, ha producido el error con consumo de CPU de aplicación externo y errores de hardware. Debe determinar la causa raíz de la 17883 mensaje de error si desea evitar un reaparición no deseado del error.

Más información

Esta sección describen las mejoras de estado y mensajes de error asociado que se pueden registrar en el registro de error de SQL Server.

UMS

Para comprender mejor algunos de los diagnósticos de estado adicional, primero debe comprender cómo SQL Server utiliza un archivo de programación de modo de usuario (UMS) UMS.DLL auxiliar.

Tanto SQL Server 7.0 y Microsoft SQL Server 2000 utilizan a programadores lógicos. Estos programadores ayudan a asegurarse de que SQL Server maximiza el uso de recursos del sistema operativo en relación con las rutas de acción de base de datos clave. La capa UMS asegura de que SQL Server utiliza correctamente los eventos de Win32 para controlar estrictamente subprocesos y fibras (o ambos) programación visibilidad para el sistema operativo. Al controlar estrictamente el subprocesos o intraprocesos que pueden ejecutar, SQL Server puede maximizar el uso de CPU tal como relaciona con primitivas de base de datos como el bloqueo.

Por ejemplo, lógica de programación permite bloquear camareros en suspensión (WaitForSingleObject en un evento de Win32) hasta que el propietario del bloqueo libera el bloqueo y señales (SetEvent) a reactivar.

Detección de bloqueo extendido

El monitor de bloqueo se ha ampliado para detectar un escenario de bloqueo nivel del recurso (subproceso de trabajo). Si un SPID que posee que un bloqueo actualmente está en cola en el programador, porque todos los subprocesos de trabajo asignado han se ha creado y los subprocesos de trabajo asignados están en un estado de espera un-resolvable, la siguiente mensaje de error se escribe en el registro de error de SQL Server:

SQL Server 7.0

Error 1223: Identificador de proceso % d: % d no se puede adquirir el bloqueo "% s" en el recurso %s porque existe un posible interbloqueo en %d de programador para el recurso. Proceso ID % d: % d mantiene un bloqueo "% h" en este recurso.
Parámetro Descripción:
  1. SPID de espera
  2. Esperando ECID (Id. ejecución de proceso Sub)
  3. Nombre del modo de bloqueo
  4. Nombre del recurso
  5. ID de programador UMS lógico
  6. SPID de propietario
  7. Propietario ECID
  8. Nombre del recurso propietaria

SQL Server 2000

Error 1229: Identificador de proceso % d: % d posee recursos que están bloqueando los procesos en % d de programador.
Parámetro Descripción:
  1. SPID de propietario
  2. Propietario ECID (Id. ejecución de proceso Sub)
  3. ID de programador UMS lógico de propietario

Indicadores de traza

SQL Server contiene una marca de seguimiento para deshabilitar este informe de estado.

Para deshabilitar el comportamiento informe, utilice uno de los métodos siguientes:
  • Establecer un parámetro de inicio (-T ### )
  • Utilice DBCC traceon ( ### )
SQL Server 7.0 :-T1216

SQL Server 2000 :-T1261

Nota Esto no es un error tipográfico. -T1216 en SQL Server 2000 ya se utiliza como el indicador de seguimiento asociado con la salida del interbloqueo. Por lo tanto, 1261 se utiliza en su lugar.

escenario de ejemplo

El cliente 1 se conecta a SQL Server.

El cliente 1 ejecuta un comando de Transact-SQL que inicia una transacción y realiza la modificación de datos.

Por ejemplo:
begin tran
update authors set au_lname = 'test'
se convierte en cliente 1 IDLE, se muestra como inactivo y esperando un comando con una transacción abierta en la tabla de sistema sysprocesses .

Los clientes 2 y 255: aproximadamente 254 más clientes inicie sesión en SQL Server y emitir una instrucción SELECT de la tabla authors. Estos clientes todo se bloquearán en la actualización original.

El cliente 1 intenta confirmar la transacción pero se convierte en cola porque todos los subprocesos de trabajo son ocupados por los clientes 2 y 255.

Bloqueo

Normalmente este mensaje de error indica una situación de bloqueo extendida. Cada vez (aproximadamente cada 5 segundos), se ejecuta el monitor de bloqueos se pueden agregar mensajes en el registro de error de SQL Server.

Nota Se registra un mensaje para cada SPID o ECID que está experimentando el problema de recursos. Por lo tanto, se pueden registrar varios mensajes durante la misma iteración de monitor de bloqueo.

SQL Server no se resuelve automáticamente esta situación. Sin embargo, indicará el problema como un mensaje de error (1223 o 1229) en consecuencia. Cuando se produce este problema, puede resolver en un número de formas.

Bloquear o tiempo de espera de consulta

Si las consultas utilizan un bloqueo o un tiempo de espera de consulta, la situación propio resolverá normalmente cuando se producen los tiempos de espera. Sin embargo, la situación garantiza investigación porque indica una reducción de aplicación inducido de concurrencia.

KILL de Transact-SQL

Si el administrador es capaz de consultar la tabla de sistema sysprocesses , pueden utilizar el comando KILL de Transact-SQL para terminar el SPID de bloqueo y para terminar la SPIDS bloqueado apropiado para liberar subprocesos y devolver el sistema a un estado normal.
251004Cómo supervisar el bloqueo de SQL Server 7.0
271509Cómo supervisar el bloqueo de SQL Server 2000
263889SQL debido a [[COMPILE]] bloqueos

Ayuda de soporte técnico

Si no puede obtener la información de tabla del sistema sysprocesses , a continuación, obtener un volcado de proceso del proceso (sqlservr.exe) y pida soporte técnico de Microsoft SQL Server investigación adicional.

Consultas en paralelo

En raras ocasiones, este mensaje de error puede deberse a una selección de plan de consulta en paralelo deficiente. Si la consulta en paralelo se elige utilizar un número significativo de trabajadores de SQL Server disponibles para realizar la consulta, puede agotar el grupo de trabajo de SQL Server. La tabla del sistema sysprocesses contiene una columna ECID para indicar el número de trabajadores que se utilizan en nombre del SPID individual. Si el valor ECID es alto en relación con las CPU físicas en el equipo, generalmente es una indicación de una consulta mal optimizada. Revise el plan de consulta y la opción de consulta max degree of parallelism (MAXDOP), establecer en ajustar correctamente la consulta en cuestión.

Importan los programadores

Importa el número de programadores lógicos. Cuando se inicia SQL Server, el valor de max worker subprocesos se divide equitativamente entre los programadores lógicos. Medida que aumenta el número de CPU disponibles para SQL Server se divide la cola de trabajo más. Una aplicación que presenta actividad de ámbito de transacción no deseados puede manifiesto situaciones de escasez de recursos más rápido cuando intervienen más procesadores. Para este tipo de escenario, el ámbito de transacción de las aplicaciones se corrige inmediatamente.

La siguiente tabla muestra las asignaciones de grupo de trabajo según el número de CPU si sp_configure almacena la configuración de procedimiento para max worker threads es igual a 255.
Contraer esta tablaAmpliar esta tabla
bloqueo de CPU longitud de cadena
1255
2128
464
832
1616
Recomendamos que mantenga el valor de max worker subprocesos con el valor predeterminado de 255. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
319942Cómo determinar la correcta configuración de configuración de SQL Server

Estado UMS

Se ha agregado una nueva rutina interna para comprobar el estado del programador lógico cada 60 segundos. Si el programador se considera como detenido o ha dejado de responder, se registra el mensaje de error apropiado en el registro de error de SQL Server. Un error se registra cada 60 segundos hasta que se resuelva el problema.

Como se mencionó anteriormente, estos mensajes suelen ser una indicación de un evento anterior. Cuidadosamente consulte los SQL Server error registro y aplicación registros de sucesos para ayudarle a determinar la causa raíz del problema.

Nota Una instantánea se toma cada 60 segundos. Por lo tanto, puede ser 120 segundos antes de que primero se detecta la condición.

SQL Server 7.0

Error: 17881 - el programador %1! ld! parece estar bloqueada. PSS 0 x % 2! p!, EC 0 x % 3! p!, contexto UMS 0 x % 4! p!
Error: 17882 - interbloqueos potenciales existen en todos los programadores

Indicadores de traza

Puede deshabilitar estas dos comprobaciones si iniciar SQL Server 7.0 con el -T1217 parámetro de inicio.

SQL Server 2000 SP3

8.00.760 (SP3)
Error: 17883 - el programador %1! ld! parece estar bloqueada. SPID %2! ld!, ECID % 3! ld!, contexto UMS 0 x % 4! p!

8.00.765

Iniciar con el activo 8.00.765 solucionar, el mensaje ha cambiado a ser más descriptivo.
Proceso de 17883 - error: %1! ld!: % 2! ld! (%3! lx!) Contexto UMS 0 x % 4! p! parece que no-generando en el programador %5! ld!

Ejemplo:
Error de servidor 2003-03-21 08:22:20.27: 17883, gravedad: 1, estado: 0
21-03-2003 08:22:20.27 servidor 51:0 de proceso (dbc) UMS contexto 0x018DA930 parece no-retención en programador 0.
21-03-2003 08:22:22.45 servidor firma de la pila para el volcado es 0 x 00000000
Error: 17884 - interbloqueos potenciales existen en todos los programadores

Indicadores de traza

Puede deshabilitar estas dos comprobaciones si iniciar SQL Server con el T1260 inicio parámetro.

Archivo de minivolcado de SQL Server 2000

A partir de SQL Server 2000 SP3, se ha implementado la capacidad de capturar un proceso de minivolcado. Comenzando por la generación 8.00.765, un archivo de minivolcado se genera cuando SQL Server detecta primero un programador detenido.

Para evitar la generación continuada de los archivos de minivolcado para estos mensajes de error (17883 and17884), el comportamiento predeterminado es producir un único archivo de minivolcado para la vida del proceso de SQL Server. Para habilitar un archivo de minivolcado para todas las apariciones de los mensajes, activar indicador de traza T1262.

El archivo de minivolcado se genera en el LOG carpeta y es SQLDmpr ### .mdmp. Se puede evaluar este archivo de minivolcado por soporte técnico de Microsoft para ayudar a determinar la causa raíz del problema.

Error 17881 y error 17883

Estos mensajes indican que un programador UMS único se experimente un problema yield. La supervisión de estado ha detectado lo que parece ser un programador con un subproceso de trabajo que no permite que a otros trabajadores para el progreso y el programador que está marcado como no responde. Un programador que ha dejado de responder suele ser un error con el producto o un componente externo (XProc, objeto COM, y así sucesivamente).

Los siguientes son ejemplos de 17833 condiciones conocidos. Asegúrese de que se busque artículos relacionados en Microsoft Knowledge Base. Si el sistema requiere una revisión actualizada, aplicar en consecuencia.
815056REVISIÓN: El proceso de punto de control puede retrasar la actividad de la base de datos de SQL Server y no produce programador correctamente causando error: 17883 se producen
810885Subsistemas de disco superiores pueden experimentar un error 17883
Si no puede determinar la causa raíz inmediatamente, consulte el registro de errores para los problemas y participar en los esfuerzos de soporte técnico ampliado.

Cuando un programador no responde correctamente, puede reducir concurrencia global para SQL Server. SQL Server también pueden aparecer para ser bloqueado o puede dejar de responder.

Error 17882 y 17884

Estos mensajes indican que todo han experimentado los UMS programadores producir problemas. Esto indica que un problema amplia del sistema de SQL Server y SQL Server aparecerá ha dejado de responder. Como con los mensajes 17881 y 17883, consulte el registro de errores y Microsoft Knowledge Base para más información. Si es necesario, participar en los esfuerzos de soporte técnico ampliado.

Propiedades

Id. de artículo: 319892 - Última revisión: miércoles, 18 de mayo de 2005 - Versión: 8.0
La información de este artículo se refiere a:
  • Service Pack 3 de Microsoft SQL Server 2000
  • Microsoft SQL Server 7.0 Service Pack 4
Palabras clave: 
kbmt kbsample kberrmsg kbbug kbfix kbinfo KB319892 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): 319892

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