DetailPage-MSS-KB

Base de Dados de Conhecimento

Artigo: 920925 - Última revisão: sexta-feira, 20 de Março de 2015 - Revisão: 4.0

 

Sumário

Suporte da Microsoft encontrou numerosos produtos de outros fabricantes que utilizem desvios para fornecer funcionalidades adicionais ao Microsoft SQL Server. Estes são normalmente auditoria funcionalidades. Não existe nenhum processo de certificação para os 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
Pode encontrar estes mesmos problemas quando estiver a utilizar o software não Microsoft como servidores ligados, procedimentos estendidos 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 as interfaces.

Nota Devido à natureza oculta de desvios 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 os serviços de suporte 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 a validar a capacidade de suporte das 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 numa localização críticas em que o thread de processo de rede net_readdata. Até 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 foi 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 com injecção 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 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:
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