2012-06-08 24 views
5

No puedo eliminar algunos trabajos del agente de SQL Server. El estado de la tarea continúa ejecutándose y el comando permanece en KILLED/ROLLBACK. El trabajo ejecuta consultas contra el sistema PI de OSI a través del servidor vinculado OLEDB y Oracle. La única forma que he encontrado hasta el momento para eliminar estos trabajos es reiniciando SQL Server (no es un método preferido).no se puede eliminar el trabajo del servidor SQL, el estado se mantiene cancelado/se invierte

Respuesta

1

Si se trata de transacciones grandes, es posible que el servidor todavía esté realizando la reversión, lo que podría llevar algún tiempo.

+0

No, son transacciones bastante pequeñas. (<10 registros) – Ahd

+0

Dependiendo de qué tan "ocupado" estén las tablas afectadas, la reversión podría llevar un tiempo incluso para un pequeño número de registros afectados. –

+1

Esto ha estado funcionando durante más de una hora en este estado ahora. Incluso si las tablas están ocupadas (lo que no es), ya deberían haberse resuelto. – Ahd

3

me encontré siguiente artículo https://connect.microsoft.com/SQLServer/feedback/details/187192/openquery-to-linked-server-hangs-leaving-spid-with-open-tran-that-cannot-be-killed-then-templog-ldf-grows-without-limit-requires-sql-server-restart-on-production-servers

Al parecer, varias personas tienen este problema utilizando openquery a través de un servidor vinculado que no es de SQL Server. Estoy volver a colocar el trabajo en torno a que BReuter publicada el artículo anterior:

Publicado por BReuter el 1/30/2007 a las 14:21 * he experianced el comportamiento exacto y han encontrado una combinación de software que estabilizó nuestro medio ambiente

Había tres ingredientes clave que encontré:

1) Asegúrese de que usted no tiene ningún servidor vinculado mediante el proveedor OLEDB de Microsoft para Oracle, en lugar de utilizar Oracle para Oracle (versión 9.2.0.4 es lo que tengo en producción).

2) No permita que el servidor vinculado se ejecute "en proceso". Esto requirió cierta investigación, pero es posible ejecutar el servidor vinculado fuera del espacio de memoria SQL siguiendo las instrucciones a continuación.

3) Estoy ejecutando SQL 2005 SP1 en W2K3, pero creo que el proveedor OLEDB es la clave y no la versión de sistema operativo o base de datos. La configuración de seguridad predeterminada es demasiado estricta para ejecutar el proveedor Oracle OLEDB (OraOLEDB) fuera de proceso. Además, la configuración predeterminada para MS DTC no permite la comunicación de red.

  1. Panel de control-> Herramientas administrativas-> Servicios de componentes
  2. Taladro para componentes Servicios-> Computadoras

    a. Haga clic derecho en Mi PC> Propiedades

  3. ficha MSDTC -> botón de configuración de seguridad (imagen abajo)

    a. Acceso a DTC de red: marcado.

    b. Permitir entrada/salida - marcado.

    c. No se requiere autenticación: simula la configuración de seguridad de Windows 2000.

    d. Habilite las transacciones XA: el tipo de transacción implementada por el proveedor OraOLEDB.

  4. Taladro para componentes Servicios-> Computadoras-> Mi PC> Configuración DCOM

    a. Haga clic con MSDAINITALIZE-> Propiedades

  5. pestaña Seguridad (imagen abajo)

    a. Permisos de acceso -> Personalizar.

    b. Presiona el botón Editar "Permisos de acceso".

    c. Otorgue permiso de "Acceso local" a la cuenta de servicio de SQL Server.

    d. Repita para “Ejecución y activación”. *

+0

Nota: Mi problema también estaba relacionado con un servidor vinculado de Oracle. Estoy usando el controlador 11.2. – Ahd

0

para mí matar a los recursos externos OLEDB no trabajado y yo por desgracia tuvieron que reiniciar la instancia del servidor SQL para solucionar este problema siempre

i mis casos que tienen seleccione con OPENQUERY de servidores vinculados oracle o listas de SharePoint que simplemente tienen un error simple como contraseña incorrecta y no puede resolver el error y va y nunca vuelve hasta que reinicie el servicio

0

Las transacciones que se atascan en KILLED/ROLLBACK pueden ser cancelado matando transacciones en el servidor local. Si la consulta es de servidor cruzado y no desea esperar la reversión, debe dirigirse al servidor remoto y eliminar la transacción, así como eliminarla en el servidor local.

Esto se aplica a cualquier sistema de base de datos.

1

Esta página http://www.jaygeiger.com/index.php/2015/03/03/how-to-kill-a-frozen-linked-sql-server-connection/ proporciona una solución. Consiste en la terminación manual de la conexión TCP. No es una solución ideal, pero es la mejor que conozco. Es mejor que tener que reiniciar todo el Servidor SQL.

Btw. Encontré ese enlace en https://connect.microsoft.com/SQLServer/feedback/details/187192/openquery-to-linked-server-hangs-leaving-spid-with-open-tran-that-cannot-be-killed-then-templog-ldf-grows-without-limit-requires-sql-server-restart-on-production-servers página mencionada en Ahd de la publicación

Cuestiones relacionadas