Al momento sei offline in attesa che la connessione Internet venga ristabilita

Detours o tecniche simili possono provocare 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 di controllo funzionalità. Non esiste alcun processo di certificazione per detours di terze parti per le applicazioni Microsoft. Pertanto, in genere, Microsoft sconsiglia l'utilizzo di detours.

Funzionalità che consente di modificare il comportamento di 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
È possono che si verifichino questi stessi problemi quando si utilizza software non Microsoft come server collegati, procedure estese o oggetti COM all'interno del processo di SQL Server. Detours sono nascosti DBA. Per individuare 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. Terze parti è responsabile del supporto di un proprio codice, così come è responsabile per il proprio server collegato o altro negata distribuzione.

È pratica comune, nel normale corso di risoluzione dei problemi di supporto tecnico clienti Microsoft per la richiesta per disattivare i processi non essenziali e per disattivare o rimuovere componenti di terze parti e tecniche simili. Microsoft cerca sempre di ridurre l'ingombro del problema durante l'identificazione dei problemi. Dopo che il problema viene identificato come non correlati per le mansioni o i 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 sono supportati. Microsoft riconosce che alcune implementazioni sono necessarie. Tuttavia, si richiede di convalidare la supportabilità del detours. Un detour da una società affidabile e attendibile è sicuramente diverso da un detour imprevisto che viene 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. I 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 per la terza parte applicabile. Microsoft non è responsabile di eventuali problemi causati dall'uso di altri prodotti o servizi in relazione a SQL Server.
Informazioni
Detours forniscono 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 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. Persino 100 cicli della CPU in questa posizione possono ridurre significativamente 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!MyGetQueuedCompletionStatusssnetlib!ConnectionReadAsyncWait
In 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 l'attività 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 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: Se è stata modificata l'immagine in memoria, l'output analoghe alle seguenti:
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 su come viene utilizzato il detours in SQL Server. Per ulteriori informazioni su detour e tecniche simili, visitare il seguente sito Web Microsoft Research Center:

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 920925 - Ultima revisione: 03/20/2015 19:21:00 - Revisione: 4.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, 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