Estás trabajando sin conexión, espera a que vuelva la conexión a Internet

Desvíos o técnicas similares pueden causar comportamientos inesperados con SQL Server

Extended support for SQL Server 2005 ends on April 12, 2016

If you are still running SQL Server 2005 after April 12, 2016, you will no longer receive security updates and technical support. We recommend upgrading to SQL Server 2014 and Azure SQL Database to achieve breakthrough performance, maintain security and compliance, and optimize your data platform infrastructure. Learn more about the options for upgrading from SQL Server 2005 to a supported version here.

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): 920925
Resumen
Soporte técnico de Microsoft ha encontrado numerosos productos de otros fabricantes que utilizan desvíos para proporcionar funcionalidades adicionales para Microsoft SQL Server. Estas son generalmente funciones de auditoría. No hay ningún proceso de certificación para desvíos de terceros para las aplicaciones de Microsoft. Por lo tanto, en general, Microsoft recomienda no el uso de desvíos.

Las características que utilizan desvíos o técnicas similares para cambiar el comportamiento de SQL Server pueden causar los siguientes problemas:
  • Problemas de rendimiento
  • Resultados incorrectos
  • Corrupción de memoria y de disco
  • Pérdida de respuesta de SQL Server
  • Finalización de proceso inesperada
  • Incapacidad para utilizar los diagnósticos del estándar, tales como la función fn_get_sql y el comando DBCC INPUTBUFFER
Puede encontrar estos mismos problemas cuando se utiliza software ajeno a Microsoft como servidores vinculados, procedimientos extendidos u objetos COM dentro del proceso de SQL Server. Desvíos se ocultan de DBA. Para descubrir un desvío, debe utilizar las técnicas que se describen en la sección "Más información" que aparece a continuación. Los servidores vinculados, objetos COM y procedimientos extendidos tienen registro explícito y define las interfaces.

Nota: Debido a la naturaleza oculta de desvíos y la falta de interfaces publicadas, Microsoft no proporciona servicios de soporte para las características de otros fabricantes que utilizan desvíos o técnicas similares. La tercera parte es responsable de soporte técnico de su propio código, igual que sería responsable de su propio servidor vinculado o sancionado por otra implementación.

Es una práctica común, en el curso habitual de solución de problemas, para que los servicios de soporte de Microsoft pedir que deshabilitar trabajos que no sean esenciales y deshabilitar o quitar componentes de otros fabricantes y otras técnicas similares. Microsoft siempre intenta reducir la huella del problema mientras que consiste en identificar el problema. Una vez identificado el problema como no relacionados con los trabajos o productos de otros fabricantes, los puestos de trabajo o productos de otros fabricantes pueden introducirse en la producción.

No es nuestra intención para descubrir un desvío y, a continuación, considere la posibilidad de la instancia de SQL Server que no es compatible. Microsoft reconoce que algunas implementaciones son necesarios. Sin embargo, Microsoft requiere validar la compatibilidad de los desvíos. Un desvío de una empresa de reputación y de confianza es definitivamente diferente de un desvío inesperado que es utilizado por un virus. Microsoft no garantiza ni certifica estos productos de otros fabricantes o cómo interactúan los productos de terceros con los servicios y productos de Microsoft. En su lugar, proveedores son responsables de la identificación y la fiabilidad de sus productos y servicios. Si tiene alguna pregunta acerca de otros productos y servicios, por favor llegue al tercero aplicable. Microsoft no es responsable de los problemas causados por el uso de otros productos o servicios relacionados con SQL Server.
Más información
Desvíos proporcionan capacidades mejoradas y un equilibrio de riesgos/recompensa. Normalmente, cuando se implementa un desvío en SQL Server, se inyecta código de terceros en el espacio de proceso. Esta actividad puede cambiar el comportamiento de SQL Server.

Las siguientes son algunas situaciones de ejemplo y los efectos secundarios posibles:
  • Los paquetes entrantes (TDS) el tráfico de red son analizados y cambiar. Se agrega el desvío en una ubicación crítica en el subproceso de red net_readdata. Hasta 100 ciclos de CPU en esta ubicación pueden reducir significativamente el rendimiento de la velocidad de proceso por lotes.

    Escribientes de memoria puede provocar un cambio en los datos reales de TDS. Este problema ha desencadenado varios problemas de estabilidad de SQL Server y dañar los datos. Problemas pueden provocar un paquete TDS cambiar parcialmente y reproducir la basura para SQL Server. Servicios en este nivel de registro pueden exponer las contraseñas y otros datos confidenciales que SQL Server traza está diseñado para suprimir y para ayudar a proteger.
  • Rutinas de análisis de SQL Server se ha desviado para cambiar el comportamiento. Los siguientes son los efectos secundarios posibles:
    • Los planes de ejecución no coinciden con el texto de la consulta actual.
    • Se envía un comando sólo una vez desde el cliente. Sin embargo, el comando se ejecuta varias veces.
    • Resultados de seguimiento muestran el comando original en lugar de la consulta modificada.
    • El comando DBCC INPUTBUFFER muestra el comando original en lugar de la consulta modificada.
    • La función fn_get_sql muestra datos incorrectos. Además, la función fn_get_sql es susceptible a las excepciones y resultados incorrectos. La función fn_get_sql es utilizada por muchas soluciones de supervisión y puede provocar problemas en las soluciones de supervisión.
    • En general pueden interrumpirse programador de modo usuario (UMS) y programar el sistema operativo de SQL Server (SQLOS). Esto lleva a la pérdida de respuesta de SQL Server, los cambios de rendimiento y las interrupciones.
  • Se ha desviado las API de Win32 que proporcionan características de seguridad mejoradas. Dependiendo de la implementación, los servicios de registro en este nivel podrían exponer las contraseñas y otros datos confidenciales. En general se interrumpe UMS y SQLOS de la programación. Esto lleva a la pérdida de respuesta de SQL Server y a las interrupciones.
  • Modificar tablas de función y redirigir las funciones de SQL Server core o la API de Windows no se admiten en el proceso de SQL Server. Esto puede llevar a inestabilidad y un comportamiento inesperado en la funcionalidad de SQL Server.
En el ejemplo siguiente se muestra la kernel32 !GetQueuedCompletionStatus se ha desviado la función.
MyDLL!MyGetQueuedCompletionStatusssnetlib!ConnectionReadAsyncWait
En el ensamblado de la función GetQueuedCompletionStatus , la primera instrucción se ha reemplazado con una instrucción de salto.
0:038> u kernel32!GetQueuedCompletionStatuskernel32!GetQueuedCompletionStatus 77e660f1 e90a9f00aa      jmp     21e70000   ß  This points to an address that does not appear in the loaded module list (lm). It is injected code.77e660f6 83ec10          sub     esp,10h
El ensamblado para el código insertado muestra la actividad de detoured y una llamada al archivo MyDLL.
0:038> u 21e70000  21e70000 55              push    ebp21e70001 8bec            mov     ebp,esp21e70003 51              push    ecx21e70004 8b4518          mov     eax,dword ptr [ebp+18h]21e70007 50              push    eax21e70008 8b4d14          mov     ecx,dword ptr [ebp+14h]21e7000b 51              push    ecx21e7000c 8b5510          mov     edx,dword ptr [ebp+10h]21e7000f 52              push    edx21e70010 8b450c          mov     eax,dword ptr [ebp+0Ch]21e70013 50              push    eax21e70014 8b4d08          mov     ecx,dword ptr [ebp+8]21e70017 51              push    ecx21e70018 e8234d19ee      call   MyDLL+0x4d40 (10004d40)   <- Call to the MyDLL file.21e7001d 8945fc          mov     dword ptr [ebp-4],eax21e70020 8b55fc          mov     edx,dword ptr [ebp-4]

Puede utilizar herramientas de depuración para Windows para determinar si se están utilizando los desvíos. Para ello, siga estos pasos.

Nota: Pruebe siempre este método antes de intentar en producción. Cuando utiliza herramientas de depuración para Windows, el proceso puede inmovilizar al ejecutar los comandos. Este comportamiento puede afectar negativamente a un servidor de producción.
  1. Adjuntar Debugging Tools for Windows a SQL Server, o cargar un archivo de volcado de usuario completo.
  2. Ejecute el siguiente comando de depurador. Este comando inspecciona cada imagen con la imagen de disco para determinar si han sido insertados desvíos.
    !for_each_module "!chkimg -v @#Base -d"
  3. Desconectar al depurador.
Para obtener herramientas de depuración para Windows, visite el siguiente sitio Web de Microsoft: Si se ha modificado la imagen en la memoria, el resultado sería similar al siguiente:
Comparison image path: c:\program files\microsoft sql server\mssql\binn\ssnetlib.dll\ssnetlib.dllScanning section:    .textSize: 56488Range to scan: 0c261000-0c26eca80c263710-0c26371a  11 bytes - ssnetlib!ConnectionClose           	[ 8b ff 55 8b ec 83 ec 10:68 00 00 00 00 e9 27 8a ]0c2641e0-0c2641ea  11 bytes - ssnetlib!ConnectionReadAsync (+0xad0)	[ 8b ff 55 8b ec 83 ec 38:68 00 00 00 00 e9 00 7e ]0c265160-0c26516a  11 bytes - ssnetlib!ConnectionWriteAsync (+0xf80)	[ 8b ff 55 8b ec 83 ec 28:68 00 00 00 00 e9 ba 70 ]Total bytes compared: 56488(100%)Number of errors: 3333 errors : 0c260000 (0c263710-0c26516a)
Puede revisar el ensamblado a mirar más de cerca a la salida como sigue:
0:038> u ssnetlib!ConnectionClosessnetlib!ConnectionClose]:0c263710 6800000000      push    00c263715 e9278ada03      jmp     MyDLL!MyGetQueuedCompletionStatus  <- A detour has been installed.

Los programas antivirus que realizan el seguimiento de los ataques de inyección de SQL pueden desvío código de SQL Server. En este escenario, el resultado de la! for_each_module "! chkimg - v @# Base -d" extensión puede mostrar que el SQL Server las funciones yyparse y ex_raise2 se modifican:

Comparison image path: <symbol file path>\sqlservr.exeRange to scan: c81000-3de7d48    ed71a8-ed71ad  6 bytes - sqlservr!yyparse [ ff f5 41 54 41 55:e9 c7 95 5c 76 90 ]1202820-1202824  5 bytes - sqlservr!ex_raise2 (+0x32b678) [ ff f3 57 41 54:e9 20 e0 29 76 ]Total bytes compared: 51801416(17%)Number of errors: 11

Se recomienda que en contacto con el proveedor de los desvíos o técnicas similares para obtener información detallada acerca de cómo utiliza los desvíos en SQL Server. Para obtener más información acerca de desvíos y técnicas similares, visite el siguiente sitio Web de Microsoft Research Center:

Warning: This article has been translated automatically

Propiedades

Id. de artículo: 920925 - Última revisión: 03/20/2015 19:18:00 - Revisión: 4.0

Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Express Edition with Advanced Services, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Standard X64 Edition, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 Workgroup Edition, Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 R2 Workgroup, Microsoft SQL Server 2008 Web, Microsoft SQL Server 2008 Workgroup, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web, SQL Server 2012 Enterprise Core, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web

  • kbtshoot kbexpertiseadvanced kbinfo kbmt KB920925 KbMtes
Comentarios