Rute ocolitoare sau tehnici similare poate provoca comportamente neașteptate cu SQL Server

IMPORTANT: Acest articol este tradus cu ajutorul software-ului Microsoft de traducere automată și poate fi corectat prin intermediul tehnologiei Community Translation Framework (CTF). Microsoft oferă articole traduse automat, post-editate de comunitate și articole traduse de oameni, pentru a permite accesul la toate articolele din Baza noastră de cunoștințe în mai multe limbi. Articolele traduse automat și post-editate pot conține greșeli de vocabular, sintaxă și/sau gramatică. Microsoft nu este responsabil de inexactitățile, erorile sau daunele cauzate de traducerea greșită a conținutului sau de utilizarea acestuia de către clienți. Găsiți mai multe informații despre traducerea în colaborare la http://support.microsoft.com/gp/machine-translation-corrections/ro.

Faceți clic aici pentru a vizualiza versiunea în limba engleză a acestui articol: 920925
Rezumat
Asistență Microsoft a întâlnit numeroase produse terțe care utilizează rute ocolitoare să furnizeze funcţionalităţi suplimentare de la Microsoft SQL Server. Acestea sunt, de obicei, audit funcţionalităţi. Există nici un proces de certificare pentru terțe rute ocolitoare pentru aplicații Microsoft. De aceea, în general, Microsoft descurajează cu insistență utilizarea de rute ocolitoare.

Caracteristici care folosesc rute ocolitoare sau tehnici similare, pentru a modifica comportamentul de SQL Server poate cauza următoarele probleme:
  • Probleme de performanță
  • Rezultate incorecte
  • Deteriorarea de disc și memorie
  • Pierdere de răspuns de la SQL Server
  • Terminarea procesului neașteptate
  • Incapacitatea de a utiliza standard de diagnosticare, cum ar fi funcția fn_get_sql și comanda DBCC INPUTBUFFER
  • 100 % a CPU și baze acoperire de date recuperare îndelungat când utilizați în memorie OLTP tabele în SQL Server
Este posibil să întâmpinați aceste aceleași probleme când utilizați software non-Microsoft, cum ar fi legat de fermă de servere, proceduri extinse sau COM obiecte în cadrul procesului de SQL Server. Rute ocolitoare sunt ascunse din vizualizarea DBA. Pentru a descoperi un ocolire, trebuie să utilizați tehnicilor descrise în secțiunea "Mai multe informații" care urmează. Legat de fermă de servere, obiectele COM și proceduri extinse au înregistrare explicit şi definite interfețe.

Notă Din cauza naturii ascunse rute ocolitoare şi lipsa de interfețe publicate, Microsoft nu furnizează consolidare servicii de asistență pentru caracteristici terț care utilizează rute ocolitoare sau tehnici similare. Terţ este responsabil cu suport de cod propriu, așa cum ar fi responsabil pentru propriul server legat sau alte aprobat implementare.

Este o soluție obișnuite, în cursul obișnuit de depanare, pentru serviciile de asistență Microsoft pentru a pune de dezactivare a activităţilor care nu sunt esențiale și să dezactivați sau eliminați componente terțe și alte tehnicile similare. Microsoft întotdeauna încearcă să reducă amprenta problemei în marcă de timp ce acesta este identificarea problemei. După ce problema este identificat ca nu au legătură cu lucrări sau produse terțe, acele lucrări sau produse terțe pot fi introduse înapoi în producție.

Nu este noastre intenția de a descoperi un ocolire și apoi să luăm în considerare instanța de SQL Server să fie acceptată. Microsoft recunoaşte că unele implementări sunt necesare. Cu toate acestea, Microsoft necesită să validați acceptarea rute ocolitoare. O ocolire la o companie reputaţie și încredere este categoric diferit de o ocolire neașteptate, care este utilizat de un virus. Microsoft nu garantează sau certificare aceste produse terțe sau cum produsele terțe interacționa cu produse și consolidare servicii Microsoft. În schimb, distribuitori terți sunt responsabili pentru identificarea și fiabilitatea lor produse și consolidare servicii. Dacă aveți întrebări despre consolidare servicii și produse terțe, vă rugăm să ajungă la aplicabile terț. Microsoft nu este responsabil pentru orice probleme provocate de utilizarea terțe produse sau consolidare servicii în legătură cu SQL Server.
Informaţii suplimentare
Rute ocolitoare oferă capacități îmbunătățită și un risc/recompensă compromis. De obicei, când o ocolire este implementată în SQL Server, cod terț este injectată într-spațiul de proces. Această activitate poate modifica comportamentul de SQL Server.

Iată unele situații exemplu și posibilele efecte secundare:
  • Intrare rețea trafic (TDS) pachete sunt scanate şi modificate. Ocolire este adăugat la o locație critice la firul de proces net_readdata rețea. Chiar și de 100 de cicluri de CPU la această locație poate reduce semnificativ batch rata de transmitere.

    O modificare în datele efective TDS poate duce la scribblers de memorie. Această problemă a declanșat diverse probleme de stabilitate SQL Server și în deteriorarea datelor. Problemele pot provoca un pachet TDS să fie schimbat parțial și pentru a reda deșeuri la SQL Server. Înregistrarea în jurnal facilitățile de la acest nivel pot expune parolele și alte date sensibile că SQL Server de urmărire este proiectat pentru a suprima și pentru a ajuta la siguranța.
  • SQL Server analizare rutine sunt detoured pentru a schimba comportamentul. Efecte secundare posibile sunt următoarele:
    • Planuri de execuție nu corespund reale interogare text.
    • O comandă este trimisă o dată la client. Cu toate acestea, comanda se execută mai multe ori.
    • Rezultatul urmei Arată comanda originală în loc de interogare modificate.
    • Comanda DBCC INPUTBUFFER Arată comanda originală în loc de interogare modificate.
    • Funcția fn_get_sql afișează date incorecte. În plus, funcția fn_get_sql este sensibil la excepții și la rezultate incorecte. Funcția fn_get_sql este utilizat de mai multe soluții de monitorizare și poate cauza probleme la soluții de monitorizare.
    • În general Programator de activităţi de mod utilizator (UMS) și programare SQL Server sistem de operare (SQLOS) poate fi întreruptă. Acest lucru duce la pierderea de răspuns de la SQL Server, pentru modificări de performanță și întreruperile.
  • Sunt detoured Win32 API-uri care furnizează caracteristici de securitate îmbunătățite. În funcție de implementare, facilitățile de înregistrare în jurnal la acest nivel ar putea expune parolele și alte date sensibile. În general se întrerupe UMS și SQLOS programare. Acest lucru duce la pierderi în SQL Server răspuns și la întreruperile.
  • Modificarea function tabele și redirectarea funcții de SQL Server core sau Windows API nu sunt acceptate în cadrul procesului de SQL Server. Acest lucru poate duce la instabilitate şi un comportament neașteptat în SQL Server funcționalitatea.
Exemplul următor arată că kernel32! GetQueuedCompletionStatus funcție a fost detoured.
MyDLL!MyGetQueuedCompletionStatusssnetlib!ConnectionReadAsyncWait
În Adunarea pentru funcția GetQueuedCompletionStatus instrucțiuni prima a fost înlocuit cu o instrucţiune de acces.
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
Asamblare pentru codul infiltrat Arată detoured activității şi un apel sosit către fișierul 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]

Utilizați Debugging Tools for Windows pentru a determina dacă se utilizează rute ocolitoare. Pentru aceasta, urmați acești pași.

Notă Testați întotdeauna această metodă înainte să încercați-l în producerea. Când utilizați Debugging Tools for Windows, procesul poate îngheța atunci când executați comenzile. Acest comportament poate afecta un server de producție.
  1. Atașați Debugging Tools for Windows la SQL Server sau încărca un fișier de imagine de utilizator complete.
  2. Problemă următoarea comandă debugger. Această comandă inspectează fiecare imagine împotriva imaginea pe disc pentru a determina dacă au fost injectată rute ocolitoare.
    !for_each_module "!chkimg -v @#Base -d"
  3. Detașați depanatorul.
Pentru a obține Debugging Tools for Windows, treceți la următorul site Web Microsoft: Dacă s-a modificat imaginea din memorie, datele de ieșire poate semăna cu următoarea:
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)
Puteți vedea asamblare să căutați mai bine problema după cum urmează:
0:038> u ssnetlib!ConnectionClosessnetlib!ConnectionClose]:0c263710 6800000000      push    00c263715 e9278ada03      jmp     MyDLL!MyGetQueuedCompletionStatus  <- A detour has been installed.

Programele antivirus care urmăresc atacuri de injectare SQL poate ocol cod SQL Server. În acest scenariu, datele de ieșire ale! for_each_module "! chkimg - v @#Base -d" extensie poate Arată că SQL Server funcționează yyparse și ex_raise2 sunt modificate:

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

Vă recomandăm să contactați furnizorul de rute ocolitoare sau similare tehnici pentru informații detaliate despre cum se utilizează rute ocolitoare în SQL Server. Pentru mai multe informații despre rute ocolitoare și tehnici similare, mergeţi la următorul site Web Microsoft Research Center:

Avertisment: acest articol a fost tradus automat

Proprietăți

ID articol: 920925 - Ultima examinare: 11/29/2016 18:09:00 - Revizie: 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 KbMtro
Feedback