Kennt jemand irgendwelche Nachteile von MARS (Multiple Active Result Sets)? Kennt jemand irgendeinen Grund, warum man MARS vermeiden sollte, wie Fälle, in denen Cursor nützlicher sind als MARS.Nachteile von MARS (Multiple Active Result Sets)?
Antwort
Es gibt offenbar mindestens zwei bekannte (potentiellen) Nachteile (aus dieser (1) Team blog):
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“
„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]
je nachdem was? Es gibt keine wirklichen Nachteile.
sie unterstützen keine Transaktion Savepoints. aber ich halte das nicht für einen Nachteil.
- 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.
CNA Sie SqlTransaction verwenden just fine. –
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. –
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