Não há suporte para o uso de desvios de terceiros ou técnicas semelhantes no SQL Server

ID do artigo: 920925 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Sumário

Recursos que usam desvios ou técnicas semelhantes para alterar o comportamento do Microsoft SQL Server podem causar os seguintes problemas:
  • Problemas de desempenho
  • Resultados incorretos
  • Corrupção de disco e memória
  • Perda da resposta do SQL Server
  • Encerramento do processo inesperado
  • Incapacidade de utilização de diagnóstico padrão, como a função fn_get_sql e o comando DBCC INPUTBUFFER
  • Maior chance de problemas de segurança
Observação A Microsoft não fornece serviços de suporte para recursos de terceiros que usam desvios ou técnicas semelhantes para alterar o comportamento do SQL Server. Se você estiver trabalhando com serviços de suporte do SQL Server em um problema do SQL Server, e ele é identificado que desvios ou técnicas semelhantes que alteram o comportamento do SQL Server podem ser envolvidas, o profissional de suporte pedirá que você desabilitar ou remover tais desvios ou recursos semelhantes como uma etapa de solução de problemas. Antes de solução de problemas adicional possa ocorrer, o problema informado deve ser reproduzido sem qualquer funcionalidade de desvio presente. O problema não deve ocorrer mais, talvez a Microsoft recomenda que você entre em contato com o fornecedor para o recurso de terceiros e continue a solucionar problemas com a direção do fornecedor.

Mais Informações

Desvios são poderosos. Desvios oferecem capacidades avançadas e uma compensação de risco/recompensa. Normalmente, quando um desvio é implementado no SQL Server, o código aplicável é injetado no espaço de processo. Funções ou métodos do SQL Server são interceptadas. Essa atividade pode alterar o comportamento básico de desempenho do SQL Server.

Estas são algumas situações de exemplo e possíveis efeitos colaterais:
  • Pacotes recebidos de (TDS) o tráfego de rede são examinados e alterados. O desvio é adicionado em um local crítico o thread do processo de rede net_readdata. Até mesmo alguns ciclos de CPU de 100 neste local podem reduzir significativamente a taxa de lote.

    Uma alteração nos dados de TDS reais pode levar a scribblers de memória. Esse problema acionou vários problemas de estabilidade do SQL Server e na corrupção de dados. Problemas podem causar um pacote TDS parcialmente seja alterado e a repetição de lixo para SQL Server. Instalações com esse nível de log pode expor as senhas e outros dados confidenciais que SQL Server o rastreamento foi projetado para eliminar e para ajudar a proteger.
  • Rotinas de análise do SQL Server são detoured para alterar o comportamento. Possíveis efeitos colaterais são:
    • Planos de execução não coincidem com texto de consulta propriamente dita.
    • Um comando é enviado apenas uma vez do cliente. No entanto, o comando é executado várias vezes.
    • Saída do rastreamento 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 incorretos. Além disso, a função fn_get_sql é suscetível a exceções e a resultados incorretos. A função fn_get_sql é usada por muitas soluções de monitoramento e pode causar problemas em soluções de monitoramento.
    • Em geral o Agendador de modo de usuário (UMS) e a programação do SQL Server sistema operacional (SQLOS) podem ser interrompidos. Isso leva à perda de resposta do SQL Server, para alterações de desempenho e a paralisações.
  • As APIs do Win32 que fornecem recursos de segurança aprimorados são detoured. Dependendo da implementação, facilidades de registro com esse nível podem expor as senhas e outros dados confidenciais. Geral UMS e SQLOS de agendamento é interrompido. Isso leva à perda de resposta do SQL Server e a paralisações.
O exemplo a seguir mostra que o kernel32!GetQueuedCompletionStatus função foi detoured.
MyDLL!MyGetQueuedCompletionStatus
ssnetlib!ConnectionReadAsyncWait
O assembly para a função GetQueuedCompletionStatus , a primeira instrução foi substituída com uma instrução de salto.
0:038> u kernel32!GetQueuedCompletionStatus
kernel32!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
O assembly para o código injetado mostra a atividade detoured e uma chamada para o arquivo MyDLL.
0:038> u 21e70000  

21e70000 55              push    ebp
21e70001 8bec            mov     ebp,esp
21e70003 51              push    ecx
21e70004 8b4518          mov     eax,dword ptr [ebp+18h]
21e70007 50              push    eax
21e70008 8b4d14          mov     ecx,dword ptr [ebp+14h]
21e7000b 51              push    ecx
21e7000c 8b5510          mov     edx,dword ptr [ebp+10h]
21e7000f 52              push    edx
21e70010 8b450c          mov     eax,dword ptr [ebp+0Ch]
21e70013 50              push    eax
21e70014 8b4d08          mov     ecx,dword ptr [ebp+8]
21e70017 51              push    ecx
21e70018 e8234d19ee      call   MyDLL+0x4d40 (10004d40)   <- Call to the MyDLL file.
21e7001d 8945fc          mov     dword ptr [ebp-4],eax
21e70020 8b55fc          mov     edx,dword ptr [ebp-4]
Você pode usar as ferramentas de depuração para Windows para determinar se os desvios estão sendo usados. Para fazer isso, siga estes passos:

Observação Sempre teste esse método antes de tentar na produção. Quando você usa as ferramentas de depuração para Windows, o processo pode congelar quando você executa os comandos. Esse comportamento pode afetar negativamente um servidor de produção.
  1. Anexar o Debugging Tools for Windows para SQL Server ou carregar um arquivo de despejo total do usuário.
  2. Emita o seguinte comando do depurador. Este comando inspeciona cada imagem em relação à imagem em disco para determinar se os desvios tenham sido injetados.
    !for_each_module "!chkimg -v @#Base -d"
  3. Separar o depurador.
Para obter as ferramentas de depuração para Windows, visite o seguinte site da Microsoft:
http://www.microsoft.com/whdc/devtools/debugging/default.mspx
Se a imagem de memória foi alterada, a saída pode ser semelhante ao seguinte:
Comparison image path: c:\program files\microsoft sql server\mssql\binn\ssnetlib.dll\ssnetlib.dll
Scanning section:    .text
Size: 56488
Range to scan: 0c261000-0c26eca8
0c263710-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: 33
33 errors : 0c260000 (0c263710-0c26516a)
Você pode revisar o assembly para examinar mais de perto o problema da seguinte maneira:
0:038> u ssnetlib!ConnectionClose
ssnetlib!ConnectionClose]:
0c263710 6800000000      push    0
0c263715 e9278ada03      jmp     MyDLL!MyGetQueuedCompletionStatus  <- A detour has been installed.
Recomendamos que você entre em contato com o provedor dos desvios ou das técnicas semelhantes para obter informações sobre como usar a desvios ou técnicas semelhantes no SQL Server. Para obter mais informações sobre desvios e técnicas semelhantes, visite o seguinte site da Microsoft Research Center na Web:
http://Research.microsoft.com/sn/Detours

Propriedades

ID do artigo: 920925 - Última revisão: quinta-feira, 10 de janeiro de 2013 - Revisão: 1.0
A informação contida neste artigo aplica-se a:
  • 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
Palavras-chave: 
kbtshoot kbexpertiseadvanced kbinfo kbmt KB920925 KbMtpt
Tradução automática
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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 920925

Submeter comentários