2008-12-17 14 views

Antwort

46

Es gibt offenbar mindestens zwei bekannte (potentiellen) Nachteile (aus dieser (1) Team blog):

  1. Offensichtlich kann diese potenzielle Probleme für alle Legacy-Systemen verursachen, die nicht entworfen wurden, zu laufen gegen eine MARS Design aktiviert - „optimiert vorhandenen Code in der nicht-MARS Welt laufen kann eine leichte Leistungs dip zeigen, wenn unmodifizierten mit MARS laufen“

  2. „mit MARS können Sie mehrere mu senden lti-Statement-Stapel an den Server. Der Server verschachtelt die Ausführung solcher Batches. Wenn beispielsweise die Stapel den Serverstatus über SET- oder USE-Anweisungen ändern oder TSQL-Transaktionsverwaltungsanweisungen (BEGIN TRAN, COMMIT, ROLLBACK) verwenden, können sowohl Sie als auch der Server verwirrt werden über das, was Ihre eigentliche Absicht ist.“

habe ich noch ein MARS aktiviert Design ausprobieren, aber ich komme so auf meinem aktuellen Projekt zu tun, ganz in der Nähe. Wir haben ein kleines Problem mit konkurrierenden (und manchmal abhängigen) Abfragevorgängen (wie dem verzögerten Laden von Konfigurationsdaten aus derselben Datenbank, die ein aktives Recordset ausführt).

Es stehen weitere Informationen auf der MSDN-Website (2) here

[(1) http://blogs.msdn.com/sqlnativeclient/archive/2006/09/27/774290.aspx]
[(2) http://msdn.microsoft.com/en-us/library/ms131686.aspx]

+3

Vor der Anwendung von @RobS großartige Lösung, ich würde diesen Artikel zuerst lesen, um sicherzustellen, dass Sie dieses Problem mit der folgenden Lösung nicht lösen können: http://devproconnections.com/development/solving-net-scalability-problem ODER Hinzufügen von .ToList() bis zum Ende deines DB-Aufrufs, der mein Problem gelöst hat. Übrigens, Danke RobS für den tollen Rat, MARS wird in Zukunft nützlich sein. :) – Termato

2

je nachdem was? Es gibt keine wirklichen Nachteile.

sie unterstützen keine Transaktion Savepoints. aber ich halte das nicht für einen Nachteil.

5
  • Es braucht etwas mehr Serverressourcen als eine Verbindung gleichzeitig.
  • Sie müssen SQL Server 2005 oder höher ausführen. Das kann ein Problem in älteren (ack!) Umgebungen sein.
+0

CNA Sie SqlTransaction verwenden just fine. –

+11

Wie viel ist "etwas mehr Serverressourcen"? Können Sie eine Schätzung in Bezug auf Speicher oder CPU vornehmen? Das interessiert mich hauptsächlich, weil ich in einer Azure-Umgebung bin, in der Ressourcen proportional zu den Kosten des Servers sind. –