Detours o tecniche simili possono causare comportamenti imprevisti con SQL Server

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
Sommario
Supporto tecnico clienti Microsoft ha rilevato numerosi prodotti di terze parti che utilizzano detours per fornire funzionalità aggiuntive per Microsoft SQL Server. Questi sono in genere il controllo di funzionalità. Non vi è alcun processo di certificazione per detours di terze parti per le applicazioni Microsoft. Pertanto, in genere, Microsoft sconsiglia l'utilizzo di detours.

Funzionalità che utilizzano detours o tecniche simili per modificare il comportamento di SQL Server può causare i seguenti problemi:
  • Problemi di prestazioni
  • Risultati non corretti
  • Danneggiamento del disco e memoria
  • Perdita della risposta di SQL Server
  • Terminazioni impreviste dei processi
  • Impossibilità di utilizzare diagnostica standard, ad esempio la funzione fn_get_sql e il comando DBCC INPUTBUFFER
  • utilizzo della CPU al 100% e lunghi tempi di ripristino di database quando si utilizzano tabelle OLTP in memoria in SQL Server
Questi stessi problemi possono verificarsi quando si utilizza software non Microsoft come server collegati, procedure estese o oggetti COM all'interno del processo di SQL Server. Detours sono nascoste DBA. Per scoprire un detour, è necessario utilizzare le tecniche descritte nella sezione "Informazioni" che segue. Server collegati, oggetti COM e procedure estese sono registrazione esplicita e definite le interfacce.

Nota: A causa della natura di detours nascosta e la mancanza di interfacce pubblicate, Microsoft non fornisce servizi di supporto per le funzionalità di terze parti che utilizzano detours o tecniche simili. La terza parte è responsabile per il supporto del proprio codice, come sarebbe responsabile di un server collegato o altro negata la distribuzione.

È prassi comune, nel corso di risoluzione dei problemi di supporto tecnico clienti Microsoft che richiede all'utente di disattivare i processi non essenziali e di disattivare o rimuovere componenti di terze parti e le tecniche di analoghe, normale. Microsoft tenta sempre di ridurre il volume del problema mentre identifica il problema. Dopo che il problema viene identificato come non correlati a processi o prodotti di terze parti, i processi o i prodotti di terze parti possono essere introdotti in produzione.

Non è nostra intenzione di scoprire un detour e quindi prendere in considerazione l'istanza di SQL Server per non essere supportate. Microsoft riconosce che alcune implementazioni sono necessarie. Tuttavia, Microsoft è necessario convalidare il supporto di detours. Un detour da una società affidabile e attendibile è decisamente diverso da un detour imprevisto utilizzato da un virus. Microsoft non garantisce né certificare l'interagiscano tra i prodotti di terze parti con prodotti e servizi Microsoft o tali prodotti di terze parti. Fornitori di terze parti sono invece responsabili dell'identificazione e l'affidabilità dei loro prodotti e servizi. Se hai domande sui prodotti di terze parti e servizi, raggiungere di terzi applicabili. Microsoft non è responsabile di eventuali problemi causati dall'uso di prodotti di terze parti o servizi per SQL Server.
Informazioni
Detours offrono funzionalità avanzate e un compromesso rischio/ricompensa. In genere, quando viene implementato un detour in SQL Server, il codice di terze parti viene inserito nello spazio di processo. Questa attività può modificare il comportamento di SQL Server.

Di seguito sono alcune situazioni di esempio e i possibili effetti collaterali:
  • Pacchetti in ingresso (TDS) il traffico di rete sono analizzati e modificati. Il detour verrà aggiunto in un percorso critico il thread di processo di rete net_readdata. Persino 100 cicli della CPU in questa posizione possono ridurre significativamente la velocità effettiva velocità batch.

    Una modifica dei dati TDS effettivi può causare la scribblers di memoria. Questo problema ha generato i vari problemi di stabilità di SQL Server e il danneggiamento dei dati. Problemi possono causare un pacchetto TDS parzialmente da modificare e riprodurre garbage per SQL Server. Meccanismi di registrazione a questo livello può esporre le password e altri dati sensibili che SQL Server la tracciatura è progettata per eliminare e per la protezione.
  • Routine di analisi di SQL Server sono detoured per modificare il comportamento. Possibili effetti collaterali sono i seguenti:
    • Il testo effettivo della query non corrispondono i piani di esecuzione.
    • Un comando viene inviato solo una volta dal client. Tuttavia, il comando viene eseguito più volte.
    • Output di analisi è illustrato 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 a 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 in modalità utente (UMS) e la pianificazione del sistema operativo di SQL Server (SQLOS) può essere interrotta. Ciò comporta la perdita della risposta di SQL Server, alle modifiche delle prestazioni e di interruzioni del servizio.
  • Sono detoured API Win32 che forniscono funzionalità di protezione avanzate. A seconda dell'implementazione, potrebbero esporre le funzionalità di registrazione a questo livello, le password e altri dati sensibili. In generale UMS e SQLOS la programmazione viene interrotta. Questo comporta la perdita della risposta di SQL Server e di interruzioni del servizio.
  • Modifica delle tabelle di funzione e il reindirizzamento dell'API di Windows o di funzioni di base di SQL Server 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 seguente mostra che la funzione kernel32 ! GetQueuedCompletionStatus funzione è stata detoured.
MyDLL!MyGetQueuedCompletionStatusssnetlib!ConnectionReadAsyncWait
Nell'assembly per la funzione GetQueuedCompletionStatus , la prima istruzione è stata sostituita con un'istruzione di 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
L'assembly per il codice inserito Mostra attività di detoured e una chiamata al file 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]

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

Nota: Verificare sempre il metodo prima di tentare la produzione. Quando si utilizzano strumenti di debug per Windows, il processo potrebbe bloccarsi quando si eseguono i comandi. Questo comportamento potrebbe compromettere un server di produzione.
  1. Debugging Tools for Windows di connettersi a SQL Server oppure caricare un file di dump utente completa.
  2. Il comando seguente 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 gli strumenti di debug per Windows, visitare il seguente sito Web Microsoft: Se è stato modificato l'immagine in memoria, l'output potrebbe simile al seguente:
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)
È possibile esaminare l'assembly da esaminare in dettaglio il problema nel modo seguente:
0:038> u ssnetlib!ConnectionClosessnetlib!ConnectionClose]:0c263710 6800000000      push    00c263715 e9278ada03      jmp     MyDLL!MyGetQueuedCompletionStatus  <- A detour has been installed.

Programmi antivirus che tengono traccia di attacchi di tipo 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 le funzioni yyparse ed ex_raise2 vengono 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 tecniche simili per informazioni dettagliate sulle modalità di utilizzo di detours in SQL Server. Per ulteriori informazioni su detours e tecniche simili, visitare il seguente sito Web Microsoft Research Center:

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 920925 - Ultima revisione: 11/29/2016 18:04:00 - Revisione: 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 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, 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 KbMtit
Feedback