DetailPage-MSS-KB

Base de Dados de Conhecimento

Artigo: 920925 - Última revisão: quarta-feira, 7 de Maio de 2014 - Revisão: 3.0

 

Sumário

Funcionalidades que utilizem desvios ou técnicas semelhantes para alterar o comportamento do Microsoft 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
  • Maiores probabilidades de problemas de segurança
Nota A Microsoft não fornece serviços de suporte para funcionalidades de outros fabricantes que utilizem desvios ou técnicas semelhantes para alterar o comportamento do SQL Server. Se estiver a trabalhar com serviços de suporte do SQL Server sobre uma questão de SQL Server e é identificada que poderiam ser envolvidas desvios ou técnicas semelhantes que alteram o comportamento do SQL Server, o técnico de suporte irá perguntar-lhe para desactivar ou remover esses desvios ou funcionalidades semelhantes como um passo de resolução de problemas. Antes que possam ocorrer a resolução de problemas adicionais, o problema comunicado deve ser reproduzido sem qualquer funcionalidade de detour presente. O problema já não ocorrer, a Microsoft poderá recomenda que contacte o fornecedor para a funcionalidade de outros fabricantes e continuar a resolução de problemas com a direcção do fornecedor.

Mais Informação

Desvios são potentes. Desvios fornecem capacidades melhoradas e uma solução de compromisso de risco/recompensa. Normalmente, quando um detour é implementado no SQL Server, o código é injectado no espaço de processo. SQL Server métodos ou funções são interceptadas. Esta actividade pode alterar o comportamento de base de desempenho 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 numa localização críticas em que o thread de processo de rede net_readdata. Até mesmo alguns 100 ciclos de 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 neste 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 real.
    • 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 a excepções e a 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, a 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 leva a perda de resposta do servidor de SQL e a 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 instabilidade e um comportamento inesperado na funcionalidade do SQL Server.
O exemplo seguinte mostra que o kernel32 !GetQueuedCompletionStatus função tenha sido detoured.
MyDLL!MyGetQueuedCompletionStatus
ssnetlib!ConnectionReadAsyncWait
Na assemblagem 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
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    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]

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 Debugging Tools for Windows, o processo susceptível de congelar 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:
http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx (http://www.microsoft.com/whdc/devtools/debugging/default.mspx)
Se a imagem de memória interna tiver sido alterada, a saída semelhantes às seguintes:
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)
Pode rever a assemblagem para dar mais atenção à saída, do seguinte modo:
0:038> u ssnetlib!ConnectionClose
ssnetlib!ConnectionClose]:
0c263710 6800000000      push    0
0c263715 e9278ada03      jmp     MyDLL!MyGetQueuedCompletionStatus  <- A detour has been installed.

Programas antivírus que controlam a ataques de injecção de SQL podem detour código de SQL Server. Neste cenário, a saída da! for_each_module "! chkimg - v @# basear -d" extensão poderá mostrar que o SQL Server funções 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 das técnicas semelhantes para obter informações sobre como utilizar a desvios ou técnicas semelhantes no SQL Server. Para mais informações sobre desvios e técnicas semelhantes, visite o seguinte site da Web do Centro de investigação de Microsoft:
http://Research.microsoft.com/sn/detours (http://research.microsoft.com/sn/detours/)

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 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
  • 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
Palavras-chave: 
kbtshoot kbexpertiseadvanced kbinfo kbmt KB920925 KbMtpt
Tradução automáticaTraduçã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 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  (http://support.microsoft.com/kb/920925/en-us/ )
Partilhar
Opções de suporte adicionais
Fóruns de Suporte da Comunidade Microsoft
Contacte-nos directamente
Encontre um parceiro certificado Microsoft
Loja Microsoft