comment simuler la latence du réseau sur ma machine de développement?

je transforme une application MS Access 2003 en serveur SQL backend. Sur ma machine dev, SQL Server est local, donc la performance est assez bonne. Je veux tester les performances avec un serveur SQL distant pour pouvoir tenir compte des effets de latence réseau lorsque je suis en train de redessiner l'application. Je m'attends à ce que certaines des requêtes qui semblent rapides aujourd'hui tournent assez lentement une fois déployées en production.

Comment puis-je ralentir (ou simuler la vitesse d'un serveur SQL distant) sans utiliser un machine virtuelle, ou le déplacement de SQL vers un autre ordinateur? Y a-t-il une sorte de mandataire ou D'utilitaire Windows qui ferait ça pour moi?

16
demandé sur RedFilter 2010-11-13 19:43:49

4 réponses

je n'ai pas utilisé moi-même, mais voici un autre DONC, la question:

dans L'un des commentaires SQL Server a été mentionné explicitement.

5
répondu icyrock.com 2017-05-23 11:52:58

vous opérez peut-être selon une idée fausse. MS-Access prend en charge ce qu'on appelle les "jointures hétérogènes" (c'est-à-dire que des tables provenant de divers fonds peuvent être incluses dans la même requête, par exemple en combinant des données D'Oracle et de SQLServer et Access et une feuille de calcul Excel). Pour soutenir cette fonctionnalité, L'accès applique le filtre de clause WHERE au client sauf dans les situations où il y a une requête "pass-through" contre un back-end intelligent. Dans SQL Server, le filtrage se produit dans moteur tournant sur le serveur, donc SQL Server envoie typiquement des ensembles de données beaucoup plus petits au client.

la réponse à votre question dépend aussi de ce que vous entendez par "à distance". Si vous lancez Access et SQL Server l'un contre l'autre sur le même réseau, le serveur SQL tournant sur le serveur ne consommera qu'une petite fraction de la bande passante que L'accès consomme, si le fichier MDB D'accès réside sur un serveur de fichiers. (Bien sûr, si le BMD réside sur le PC local, aucune bande passante réseau n'est consommer. Si vous comparez L'accès sur un serveur LAN par rapport à un serveur SQL via le cloud, vous comparez un tuyau nominal de 100 mbit/sec par rapport à la bande passante DSL ou câble, c'est-à-dire par rapport à une bande passante nominale de 20 mbit/sec pour le câble haute vitesse, un cinquième de la bande passante au mieux, probablement beaucoup moins.

alors vous devez être plus précis sur ce que vous essayez de comparer.

comparez-vous des clients D'accès sur le PC local en consommant un MDB D'accès résidant sur le serveur de fichiers contre un autre type de client consommant des données d'un serveur SQL résidant sur un autre serveur sur le même réseau? Allez-vous continuer à utiliser Access en tant que client? Votre demande de pass-through?

0
répondu Tim 2010-11-13 17:12:19

il y a une application logicielle pour Windows qui fait cela (simule une faible largeur de bande, la latence et les pertes si nécessaire). Il n'gratuit. La version d'essai a une limite d'émulation de 30 secondes. Voici la page d'accueil du produit: http://softperfect.com/products/connectionemulator/

0
répondu Andrew Lock 2010-11-13 21:58:32

@RedFilter: vous devez indiquer la version D'accès que vous utilisez. Ce document de 2006 montre que l'histoire de ce que L'accès fait descendre au client à travers le fil est plus compliquée que si la requête contient des "mots-clés spécifiques à L'accès".

http://msdn.microsoft.com/en-us/library/bb188204 (SQL.90).aspx

mais L'accès peut devenir de plus en plus sophistiqué sur l'utilisation des ressources du serveur avec chaque nouvelle version.

je vais suivre mon simple conseil: si vous voulez minimiser consommation de bande passante, tout en utilisant Access comme interface graphique, requêtes de passage faites au mieux, car alors c'est vous, pas Access, qui contrôlera la quantité de données qui descendra le fil.

je pense toujours que votre question initiale/approche est mal orientée: si votre fichier MDB D'accès a été localisé sur le LAN en premier lieu (était-ce?) vous n'avez pas besoin de simuler les effets de réseau le temps de latence. Vous devez renifler les déclarations SQL que L'accès génère, plutôt que d'introduire un facteur arbitraire et constant de "latence réseau". Pour comparer une interface graphique D'Accès utilisant un BMD situé sur un serveur LAN avec une interface graphique d'accès upsized allant à l'encontre d'un serveur SQL back-end, vous devez évaluer ce que l'accès aux données fait descendre à travers le fil vers le client à partir du serveur back-end. Même L'accès "upsized" peut être un hog au creux de bande passante à moins que vous n'utilisiez des requêtes pass-through. Mais un écrit correctement client pour un serveur SQL back-end sera toujours beaucoup plus parcimonieux avec la bande passante réseau que L'accès allant à l'encontre D'un BMD situé sur un serveur LAN,ceteris paribus.

0
répondu Tim 2010-11-16 14:50:53