Błąd OutOfMemoryException podczas wykonywania zapytania w programie SQL Server Management Studio (SSMS)

Ten artykuł ułatwia rozwiązanie problemu występującego podczas korzystania z programu SQL Server Management Studio (SSMS) do uruchamiania zapytania SQL zwracającego dużą ilość danych.

Oryginalna wersja produktu: SQL Server
Oryginalny numer KB: 2874903

Objawy

Jeśli używasz programu SSMS do uruchamiania zapytania SQL zwracającego bardzo dużą ilość danych, zostanie wyświetlony komunikat o błędzie podobny do następującego:

Wystąpił błąd podczas wykonywania zadania. Komunikat o błędzie: Zgłoszono wyjątek typu "System.OutOfMemoryException"

Przyczyna

Ten problem występuje, ponieważ program SSMS nie ma wystarczającej ilości pamięci do przydzielenia dużych wyników. Program SSMS jest procesem 32-bitowym. W związku z tym jest ograniczona do 2 GB pamięci wirtualnej trybu użytkownika. Program SSMS nakłada sztuczny limit ilości tekstu na pole bazy danych w oknie wyników. Ten limit wynosi 64 KB w trybie siatki i 8 KB w trybie tekstowym. Jeśli zestaw wyników jest zbyt duży, pamięć wymagana do wyświetlenia wyników zapytania może przekroczyć limit 2 GB procesu programu SSMS. W związku z tym duży zestaw wyników może spowodować błąd wymieniony w sekcji Objawy .

Rozwiązanie

Aby obejść ten problem, wypróbuj jedną z następujących metod.

Metoda 1. Wyprowadza wyniki jako tekst

Skonfiguruj okno zapytania, aby wyświetlić wyniki zapytania jako tekst. Dane wyjściowe tekstowe używają mniejszej ilości pamięci niż siatka i może wystarczyć do wyświetlenia wyników zapytania. Aby wprowadzić tę zmianę, wykonaj następujące kroki:

  1. Kliknij prawym przyciskiem myszy okno zapytania.
  2. Wybierz Wyniki do.
  3. Wybierz Wyniki na tekst.

Metoda 2. Wyprowadzenie wyników do pliku

Skonfiguruj okno zapytania, aby wyświetlić wyniki zapytania w pliku. Wyjście plikowe korzysta z minimalnej ilości pamięci. Spowoduje to zarezerwowanie większej ilości pamięci do przechowywania zestawu wyników. Aby wprowadzić tę zmianę, wykonaj następujące kroki:

  1. Kliknij prawym przyciskiem myszy okno zapytania.
  2. Wybierz Wyniki do.
  3. Wybierz Wyniki do pliku.
  4. Uruchom zapytanie, a następnie wybierz lokalizację, w której chcesz zapisać plik wyników.

Metoda 3. Korzystanie z narzędzia sqlcmd

Użyj narzędzia sqlcmd zamiast programu SSMS do uruchamiania zapytań SQL. Ta metoda umożliwia uruchamianie zapytań bez zasobów wymaganych przez interfejs użytkownika programu SSMS. Ponadto można użyć 64-bitowej wersji Sqlcmd.exe, aby uniknąć ograniczenia pamięci, które ma wpływ na 32-bitowy proces SSMS.