Fonctionnalités qui permettent de modifier le comportement de Microsoft SQL Server detours ou des techniques similaires peuvent provoquer les problèmes suivants :
- Problèmes de performances
- Résultats incorrects
- Corruption de disque et mémoire
- Perte de réponse de SQL Server
- Arrêt inattendu du processus
- Impossibilité d'utiliser des tests de diagnostic standard, telles que la fonction fn_get_sql et la commande DBCC INPUTBUFFER
- Risques de problèmes de sécurité
Remarque : Microsoft ne fournit pas de services de prise en charge des fonctionnalités tierces utilisant detours ou des techniques similaires pour modifier le comportement de SQL Server. Si vous travaillez avec les services de prise en charge de SQL Server sur un problème de SQL Server, et elle est identifiée que detours ou des techniques similaires qui modifient le comportement de SQL Server pourraient être impliqués, le technicien du support technique vous demande de désactiver ou de supprimer ces detours ou des fonctionnalités similaires sous la forme d'une étape de dépannage. Avant que la résolution des problèmes supplémentaires se produisent, le problème signalé doit être reproduit sans aucune fonctionnalité détour présente. Le problème n'est plus cas, Microsoft peut recommander que vous contactez le fournisseur pour la fonctionnalité tierce et poursuivez le dépannage avec la direction à partir de ce fournisseur.
Detours sont puissantes. Detours fournissent des fonctionnalités améliorées et un compromis de risques/gratifications. En règle générale, lorsqu'un détour est implémentée dans SQL Server, le code applicable est injecté dans l'espace de processus. Méthodes de SQL Server ou des fonctions sont interceptées. Cette activité peut modifier le comportement de base de performances de SQL Server.
Voici quelques situations exemple et les éventuels effets secondaires :
- Les paquets de trafic (TDS) réseau entrants sont analysés et modifiés. Le détour est ajouté à un emplacement sur le thread de processus net_readdata réseau critique. Même certains 100 cycles de processeur à cet emplacement peuvent considérablement réduire le débit de taux par lots.
Scribblers de mémoire peut entraîner un changement dans les données réelles de TDS. Ce problème a déclenché divers problèmes de stabilité de SQL Server et une altération des données. Des problèmes peuvent provoquer un paquet TDS d'être partiellement modifiées et relecture garbage à SQL Server. Des fonctionnalités à ce niveau de consignation peuvent exposer les mots de passe et autres données sensibles que SQL Server tracing est conçu pour supprimer et à sécuriser. - Routines d'analyse de SQL Server sont detoured pour modifier le comportement. Les effets secondaires possibles sont les suivantes :
- Plans d'exécution ne correspondent pas de texte de la requête réelle.
- Une commande est soumise qu'une seule fois à partir du client. Toutefois, la commande est exécutée plusieurs fois.
- Sortie de trace indique la commande d'origine au lieu de la requête modifiée.
- La commande DBCC INPUTBUFFER montre la commande d'origine au lieu de la requête modifiée.
- La fonction fn_get_sql affiche des données incorrectes. En outre, la fonction fn_get_sql est sensible aux exceptions et des résultats incorrects. La fonction fn_get_sql n'est utilisée par de nombreuses solutions de surveillance et peut provoquer des problèmes sur les solutions de contrôle.
- Ensemble du Planificateur de Mode utilisateur (UMS) et la planification du système d'exploitation de SQL Server (SQLOS) peuvent être interrompues. Cela conduit à une perte de réponse de SQL Server, aux modifications de performances et aux pannes.
- API Win32 qui fournissent des fonctionnalités de sécurité améliorées sont detoured. En fonction de la mise en oeuvre, les fonctions d'enregistrement à ce niveau peuvent exposer les mots de passe et autres données sensibles. Globalement UMS et SQLOS de planification est interrompue. Cela conduit à une perte de réponse de SQL Server et aux pannes.
L'exemple suivant montre que la
kernel32 !GetQueuedCompletionStatus fonction a été detoured.
MyDLL!MyGetQueuedCompletionStatus
ssnetlib!ConnectionReadAsyncWait
Dans l'assembly pour la fonction
GetQueuedCompletionStatus , la première instruction a été remplacée par une instruction de saut.
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 pour le code injecté indique l'activité detoured et un appel au fichier 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]
Vous pouvez utiliser les outils de débogage pour Windows pour déterminer si des détours sont utilisés. Pour ce faire, procédez comme suit.
Remarque : Testez toujours cette méthode avant d'essayer de production. Lorsque vous utilisez des outils de débogage pour Windows, le processus peut se figer lorsque vous exécutez les commandes. Ce comportement peut affecter un serveur de production.
- Attacher des outils de débogage pour Windows pour SQL Server, ou charger un fichier de vidage utilisateur complet.
- Émettez la commande suivante du débogueur. Cette commande inspecte chaque image par rapport à l'image sur disque pour déterminer si detours ont été injectés.
!for_each_module "!chkimg -v @#Base -d"
- Détacher le débogueur.
Pour obtenir les outils de débogage pour Windows, visitez le site Web de Microsoft à l'adresse suivante :
Si l'image en mémoire a été modifié, le résultat peut ressembler à ceci :
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)Vous pouvez examiner l'assembly à regarder plus en détail le problème, comme suit :
0:038> u ssnetlib!ConnectionClose
ssnetlib!ConnectionClose]:
0c263710 6800000000 push 0
0c263715 e9278ada03 jmp MyDLL!MyGetQueuedCompletionStatus <- A detour has been installed.
Nous vous conseillons de contacter le fournisseur des detours ou des techniques similaires pour plus d'informations sur la façon d'utiliser le detours ou des techniques similaires dans SQL Server. Pour plus d'informations à propos des détours et des techniques similaires, visitez le site Web de Microsoft Research Center suivant :
Numéro d'article: 920925 - Dernière mise à jour: jeudi 10 janvier 2013 - Version: 1.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
- 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 Édition Personelle
- Microsoft SQL Server 2000 Standard
- Microsoft SQL Server 2000 Workgroup Edition
- Microsoft SQL Server 2000 Édition Développeur
- Microsoft SQL Server 2000 Édition Entreprise
- 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
| kbtshoot kbexpertiseadvanced kbinfo kbmt KB920925 KbMtfr |
Traduction automatiqueIMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante:
920925
(http://support.microsoft.com/kb/920925/en-us/
)
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.