DetailPage-MSS-KB

Microsoft Knowledge Base

Identificativo articolo: 920925 - Ultima modifica: mercoledì 7 maggio 2014 - Revisione: 3.0

 

Sommario

Funzionalità che consente di modificare il comportamento di Microsoft SQL Server detours o tecniche simili possono generare i seguenti problemi:
  • Problemi di prestazioni
  • Risultati non corretti
  • Danneggiamento del disco e memoria
  • Perdita della risposta di SQL Server
  • Terminazione imprevista del processo
  • Impossibilità di utilizzare diagnostica standard, ad esempio la funzione fn_get_sql e il comando DBCC INPUTBUFFER
  • Rischio di problemi di protezione
Nota. Microsoft non fornisce servizi di supporto per le funzionalità di terze parti che utilizzano detours o tecniche simili per modificare il comportamento di SQL Server. Se si lavora con i servizi di supporto di SQL Server su un problema di SQL Server e viene identificata che possano essere coinvolti detours o tecniche simili che cambiano il comportamento di SQL Server, il supporto tecnico verrà visualizzato un messaggio per disattivare o rimuovere tali detours o funzionalità simili come risoluzione del problema. Prima di eseguire ulteriore risoluzione dei problemi, il problema segnalato deve essere riprodotti senza alcuna funzionalità di detour presente. Il problema non dovrebbe più verificarsi, Microsoft consiglia di contattare il fornitore per la funzionalità di terze parti e continuare la risoluzione dei problemi con direzione da tale fornitore.

Informazioni

Detours sono efficaci. Detours forniscono funzionalità avanzate e un compromesso rischio/ricompensa. In genere, quando viene implementato un detour in SQL Server, il codice appropriato viene inserito nello spazio di processo. Funzioni o metodi di SQL Server vengono intercettate. Questa attività può modificare il comportamento di base delle prestazioni di SQL Server.

Di seguito sono riportate alcune situazioni di esempio e i possibili effetti collaterali:
  • I pacchetti in ingresso (TDS) il traffico di rete sono analizzati e modificati. Il detour viene aggiunto a un percorso critico nel thread del processo di rete net_readdata. Anche alcuni 100 cicli della CPU in questa posizione possono ridurre notevolmente la velocità effettiva del tasso di batch.

    Scribblers di memoria può comportare una modifica dei dati TDS effettivi. Questo problema è generato vari problemi di stabilità di SQL Server e danneggiamento dei dati. Problemi possono causare un pacchetto TDS parzialmente da modificare e riprodurre garbage per SQL Server. Meccanismi a questo livello di registrazione possono esporre le password e altri dati sensibili che SQL Server analisi sono stato progettato per sopprimere e per la protezione.
  • Routine di analisi di SQL Server sono detoured per modificare il comportamento. Possibili effetti collaterali sono i seguenti:
    • Testo query effettiva non corrispondono a piani di esecuzione.
    • Un comando viene inviato solo una volta dal client. Tuttavia, il comando viene eseguito più volte.
    • Output di analisi viene visualizzato il comando originale anziché la query modificata.
    • Il comando DBCC INPUTBUFFER Mostra il comando originale anziché la query modificata.
    • La funzione fn_get_sql Mostra dati non corretti. Inoltre, la funzione fn_get_sql è soggetta alle eccezioni e risultati non corretti. La funzione fn_get_sql viene utilizzata da molte soluzioni di monitoraggio e potrebbe causare problemi in soluzioni di monitoraggio.
    • In generale dell'utilità di pianificazione di modalità utente (UMS) e la pianificazione del sistema operativo di SQL Server (SQLOS) può essere interrotta. Questo porta alla perdita di risposta di SQL Server, per modifiche delle prestazioni e di interruzioni del servizio.
  • Le API Win32 che forniscono funzionalità di protezione avanzate sono detoured. A seconda dell'implementazione, funzionalità di registrazione a questo livello potrebbe esporre le password e altri dati sensibili. In generale UMS e SQLOS la programmazione viene interrotta. Questo porta alla perdita di risposta di SQL Server e di interruzioni del servizio.
  • Modifica delle tabelle di funzione e il reindirizzamento di funzioni di SQL Server core o API di Windows non sono supportate all'interno del processo di SQL Server. Ciò può causare instabilità e un comportamento imprevisto nella funzionalità di SQL Server.
Nell'esempio riportato di seguito viene illustrato che la funzione kernel32 !GetQueuedCompletionStatus funzione è stata detoured.
MyDLL!MyGetQueuedCompletionStatus
ssnetlib!ConnectionReadAsyncWait
In assembly per la funzione GetQueuedCompletionStatus , la prima istruzione è stata sostituita con un'istruzione di 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
L'assembly per il codice inserito Mostra l'attività detoured e una chiamata al file 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]

È possibile utilizzare gli strumenti di debug per Windows per determinare se vengono utilizzati detours. A tale scopo, attenersi alla seguente procedura:

Nota. Verificare sempre il metodo prima che si tenti di produzione. Quando si utilizza il Debugging Tools for Windows, il processo potrebbe bloccarsi quando si eseguono i comandi. Questo comportamento potrebbe compromettere un server di produzione.
  1. Collegare gli strumenti di debug per Windows a SQL Server o caricare un file di dettagli completo.
  2. Consente di inviare il seguente comando del debugger. Questo comando controlla se ogni immagine con l'immagine su disco per determinare se è stato inserito detours.
    !for_each_module "!chkimg -v @#Base -d"
  3. Disconnessione del debugger.
Per ottenere Debugging Tools for Windows, visitare il seguente sito Web Microsoft:
http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx (http://www.microsoft.com/whdc/devtools/debugging/default.mspx)
Se è stato modificato l'immagine in memoria, l'output analoghe alle seguenti:
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)
È possibile esaminare l'assembly da esaminare in dettaglio il problema, come indicato di seguito:
0:038> u ssnetlib!ConnectionClose
ssnetlib!ConnectionClose]:
0c263710 6800000000      push    0
0c263715 e9278ada03      jmp     MyDLL!MyGetQueuedCompletionStatus  <- A detour has been installed.

Programmi antivirus che tengono traccia di attacchi SQL Injection possono detour codice di SQL Server. In questo scenario, l'output del! for_each_module "! chkimg v-@# di Base -d" estensione potrebbe mostrare che il SQL Server funzioni yyparse ed ex_raise2 sono modificati:

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

Si consiglia di contattare il provider del detours o di tecniche simili per informazioni su come utilizzare il detours o tecniche simili in SQL Server. Per ulteriori informazioni su detour e tecniche simili, visitare il seguente sito Web di Microsoft Research Center:
http://Research.microsoft.com/sn/Detours (http://research.microsoft.com/sn/detours/)

Le informazioni in questo articolo si applicano 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
  • 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
Chiavi: 
kbtshoot kbexpertiseadvanced kbinfo kbmt KB920925 KbMtit
Traduzione automatica articoliTraduzione automatica articoli
IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.
Clicca qui per visualizzare la versione originale in inglese dell’articolo: 920925  (http://support.microsoft.com/kb/920925/en-us/ )
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Condividi
Altre opzioni per il supporto
Forum del supporto di Microsoft Community
Contattaci direttamente
Ricerca di un partner certificato Microsoft
Microsoft Store