Powolne działanie INSERT do Linked Server

0

Witajcie,

Borykam się od jakiegoś czasu z wolnym działaniem INSERT do bazy podłączonej przez Linked Server. Sytuacja wyglądała tak (nie będę rozpisywał się o całości tylko skupie się na dwóch konkretnych bazach):
Na początku miałem 2 bazy na jednej instancji na SQL Server 2008 R2. Jedna baza była od programu A, druga od programu B. Po wykonanej pewnej czynności w programie A, był import części danych do programu B, czyli na bazie A uruchamiana była procedura która zawierała kilka insertów do różnych tabel na bazie B. Gdy obie bazy pracowały na 2008R2 i były na jednej instancji to odbywało się to w sekundę. Po jakimś czasie został zakupiony SQL Server 2016. Na nowym SQL zostały podłączone bazy od programu A - Compatibility level ustawiony na 100 (SQL 2008). Na SQL2016 została podłączona baza programu B przez Linked Server. Od tego momenu kilka insertów potrzebuje, od 15 sekund do nawet minuty.

Czy ma ktoś pomysł co może być powodem powolnej pracy?

Pozdrawiam

1

Dzieje się tak dlatego, że dla każdego wstawianego przez linked server wiersza zostaje utworzone nowe połączenie. Zamiast insertować z A na B, zróbcie procedurę na B, która będzie zaciągać dane z A, a następnie je insertować. Będzie znacznie szybciej.

Inne rozwiązanie to wstawienie wszystkich insertów w zmiennej varchar(max) i wykonanie jednorazowo EXEC ('use baza_B;' + inserty_w_zmiennej_varchar).

0

Dzięki za odpowiedź! Wypróbuje najpierw procedurę na B.
Dam znać jakie rezultaty.

0

Trudno porównywac prędkość 2 baz na jednej istancji z linked serverem...
Poglądowo zapoznaj się z tym:
https://thomaslarock.com/2013/05/top-3-performance-killers-for-linked-server-queries/

0

wykonanie procedury na bazie B zaciągająca dane z bazy A rozwiązało problem. Dzięki!

1 użytkowników online, w tym zalogowanych: 0, gości: 1