Desvios ou técnicas semelhantes poderão provocar comportamentos inesperados com o SQL Server

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 920925
Sumário
Suporte da Microsoft encontrou numerosos produtos de outros fabricantes que utilizem desvios para fornecer funcionalidades adicionais para o Microsoft SQL Server. Estes são normalmente auditoria funcionalidades. Não existe nenhum processo de certificação de desvios de outros fabricantes para aplicações da Microsoft. Por conseguinte, geralmente, Microsoft vivamente desencoraja a utilização de desvios.

Funcionalidades que utilizem desvios ou técnicas semelhantes para alterar o comportamento do SQL Server podem causar os seguintes problemas:
  • Problemas de desempenho
  • Resultados incorrectos
  • Danos no disco e memória
  • Perda de resposta do servidor de SQL
  • Terminação de processos inesperados
  • Impossibilidade de utilizar os diagnósticos padrão, tais como a função de fn_get_sql e o comando DBCC INPUTBUFFER
  • utilização da CPU de 100 por cento e longa o horas de recuperação da base de dados quando utilizar tabelas OLTP de memória no SQL Server
Poderá encontrar estes mesmos problemas quando estiver a utilizar o software não Microsoft, tais como servidores ligados, procedimentos expandidos ou objectos COM no âmbito do processo de SQL Server. Desvios são ocultados da vista DBA. Para revelar uma detour, tem de utilizar as técnicas que são descritas na secção "Mais informação" que se segue. Servidores ligados, objectos COM e procedimentos estendidos registo explícito e definidas interfaces.

Nota Devido à natureza dos desvios oculta e a falta de interfaces publicados, a Microsoft não fornece serviços de suporte para funcionalidades de outros fabricantes que utilizem desvios ou técnicas semelhantes. O terceiro é responsável pelo suporte do seu próprio código, tal como seria responsável pelo seu próprio servidor ligado ou outros sancionada implementação.

É prática comum, no decurso normal de resolução de problemas, para serviços de suporte da Microsoft para lhe pedir para desactivar trabalhos não essenciais e para desactivar ou remover componentes de outros fabricantes e técnicas semelhantes, outras. Microsoft tenta sempre reduzir os requisitos de espaço do problema enquanto está a identificar o problema. Depois do problema é identificado como não relacionados com as tarefas ou os produtos de outros fabricantes, essas tarefas ou produtos de outros fabricantes podem ser introduzidos novamente na produção.

Não é a nossa intenção destapar um detour e, em seguida, considere a instância do SQL Server para ser suportado. Microsoft reconhece que algumas implementações são necessárias. No entanto, a Microsoft requer que valide a compatibilidade dos desvios. Um detour de uma empresa fiáveis e fidedigna é definitivamente diferente de um inesperado detour que é utilizado por um vírus. A Microsoft não justificar ou certificarem destes produtos de outros fabricantes ou o modo como os produtos de outros fabricantes interagem com produtos e serviços Microsoft. Em vez disso, outros fabricantes são responsáveis pela identificação e fiabilidade dos respectivos produtos e serviços. Se tiver quaisquer perguntas sobre os produtos de outros fabricantes e serviços, por favor chegar aos terceiros aplicáveis. Microsoft não é responsável por quaisquer problemas provocados pela utilização de produtos de outros fabricantes ou serviços em conjunto com o SQL Server.
Mais Informação
Desvios fornecem capacidades melhoradas e uma solução de compromisso de risco/recompensa. Normalmente, quando um detour é implementado no SQL Server, o código de outros fabricantes é injectado no espaço de processo. Esta actividade pode alterar o comportamento do SQL Server.

Seguem-se algumas situações de exemplo e os possíveis efeitos secundários:
  • Receber pacotes de tráfego (TDS) de rede são analisados e alterados. O detour é adicionada uma localização críticas no thread do processo de rede net_readdata. Até 100 ciclos da CPU nesta localização podem reduzir significativamente o débito de taxa de batch.

    Uma alteração nos dados TDS reais pode conduzir a scribblers de memória. Este problema foi accionado vários problemas de estabilidade do SQL Server e danificar os dados. Problemas poderão fazer com que um pacote TDS parcialmente seja alterado e voltar a reproduzir o lixo para o SQL Server. Instalações a este nível de registo pode expor palavras-passe e outros dados confidenciais que o rastreio foi concebido para suprimir e para ajudar a proteger o SQL Server.
  • Rotinas de análise do SQL Server são detoured para alterar o comportamento. Seguem-se possíveis efeitos secundários:
    • Planos de execução não coincidem com texto de consulta actual.
    • Um comando seja apresentado apenas uma vez do cliente. No entanto, o comando é executado várias vezes.
    • Os resultados do rastreio mostra o comando original em vez da consulta alterada.
    • O comando DBCC INPUTBUFFER mostra o comando original em vez da consulta alterada.
    • A função fn_get_sql mostra dados incorrectos. Além disso, a função fn_get_sql é susceptível de excepções e resultados incorrectos. A função fn_get_sql é utilizada por várias soluções de monitorização e poderão causar problemas em soluções de monitorização.
    • Global Programador de modo de utilizador (UMS) e o agendamento de sistema operativo de servidor de SQL (SQLOS) podem ser interrompidas. Isto conduz à perda de resposta do servidor de SQL, alterações de desempenho e falhas.
  • APIs do Win32 que fornecem funcionalidades de segurança avançadas são detoured. Dependendo da implementação, instalações de registo a este nível poderá expor palavras-passe e outros dados confidenciais. Global UMS e SQLOS de agendamento é interrompido. Isto conduz à perda de resposta do servidor de SQL e falhas.
  • Modificar tabelas de função e redireccionamento de funções de SQL Server core ou da API do Windows não são suportadas no âmbito do processo de SQL Server. Isto pode causar a instabilidade e um comportamento inesperado na funcionalidade do SQL Server.
O exemplo seguinte mostra que o kernel32 ! GetQueuedCompletionStatus função foi detoured.
MyDLL!MyGetQueuedCompletionStatusssnetlib!ConnectionReadAsyncWait
A assemblagem para a função GetQueuedCompletionStatus , a primeira instrução foi substituída com uma instrução 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
A assemblagem para o código introduzido mostra a actividade de detoured e uma chamada para o ficheiro 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]

Pode utilizar ferramentas de depuração para o Windows para determinar se os desvios estão a ser utilizados. Para tal, siga estes passos.

Nota Teste sempre este método antes de tentar na produção. Quando utiliza ferramentas de depuração para o Windows, o processo poderá fixar quando executa os comandos. Este comportamento pode afectar negativamente um servidor de produção.
  1. Anexar Debugging Tools for Windows para o SQL Server, ou carregar um ficheiro de informação de utilizador completa.
  2. Emita o seguinte comando de depurador. Este comando inspecciona cada imagem contra a imagem de disco para determinar se os desvios tem sido injectados.
    !for_each_module "!chkimg -v @#Base -d"
  3. Desligar o depurador.
Para obter Debugging Tools for Windows, visite o seguinte Web site da Microsoft: Se a imagem de memória foi alterada, a saída semelhantes às seguintes:
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)
Pode rever a assemblagem para observar o problema mais detalhadamente do seguinte modo:
0:038> u ssnetlib!ConnectionClosessnetlib!ConnectionClose]:0c263710 6800000000      push    00c263715 e9278ada03      jmp     MyDLL!MyGetQueuedCompletionStatus  <- A detour has been installed.

Os programas antivírus que controlam a ataques com injecção SQL podem detour código de SQL Server. Neste cenário, a saída da! for_each_module "! chkimg - v @# Base -d" extensão poderá mostrar que o SQL Server funciona yyparse e ex_raise2 são modificadas:

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

Recomendamos que contacte o fornecedor dos desvios ou técnicas semelhantes para obter informações detalhadas sobre como este utiliza os desvios no SQL Server. Para mais informações sobre desvios e técnicas semelhantes, vá para o seguinte Web site da Microsoft Research Center:

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 920925 - Última Revisão: 11/29/2016 18:08:00 - Revisão: 7.0

Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Express Edition with Advanced Services, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL 2005 Server Workgroup, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL 2005 Server Enterprise, 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, Microsoft 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 KbMtpt
Comentários