Czy ktoś wie o jakichkolwiek wadach MARS (Multiple Active Result Sets)? Czy ktoś zna jakiś powód, dla którego należy unikać używania MARS, na przykład w przypadkach, w których kursory są bardziej przydatne niż MARS.
Odpowiedzi:
Najwyraźniej istnieją co najmniej dwie znane (potencjalne) wady (z tego (1) bloga zespołu ):
Oczywiście może to powodować potencjalne problemy w przypadku wszelkich starszych systemów, które nie zostały zaprojektowane do pracy z projektem obsługującym MARS - „istniejący kod zoptymalizowany pod kątem działania w świecie innym niż MARS może wykazywać niewielki spadek wydajności, gdy jest uruchamiany bez modyfikacji z MARS”
„Dzięki MARS możesz wysyłać na serwer wiele pakietów zawierających wiele instrukcji. Serwer będzie przeplatał wykonywanie takich partii, co oznacza, że jeśli partie zmienią stan serwera za pomocą na przykład instrukcji SET lub USE lub użyją instrukcji zarządzania transakcjami TSQL (BEGIN TRAN, COMMIT, ROLLBACK), zarówno Ty, jak i serwer możecie się pomylić o tym, jakie są Twoje rzeczywiste zamiary ”.
Jeszcze nie wypróbowałem projektu obsługującego MARS, ale jestem bardzo blisko zrobienia tego w moim obecnym projekcie. Mamy niewielki problem z konkurującymi (a czasem zależnymi) operacjami zapytań (np. Leniwe ładowanie danych konfiguracyjnych z tej samej bazy danych, którą wykonuje aktywny zestaw rekordów).
Więcej informacji można znaleźć w witrynie MSDN (2) tutaj
[(1) https://web.archive.org/web/20190911155929/https://blogs.msdn.microsoft.com/sqlnativeclient/2006/09/27/using-mars-with-sql-native-client/ ]
[(2) http://msdn.microsoft.com/en-us/library/ms131686.aspx ]
w zależności od czego? nie ma prawdziwych wad.
nie obsługują punktów zapisu transakcji. ale nie uważam tego za wadę.