Istotność 17 wskazuje, że w SQL Server zabrakło wymaganego zasobu. Zwykle widać to, gdy w bazie danych zabraknie miejsca. W tym przypadku wygląda na to, że tempdb jest używany do odczytu wierszy wersji zatwierdzonej izolacji migawki dla zapytania wymagającego przelania do tempdb.
Może to być dość powszechne, jeśli tempdb ma ograniczony maksymalny rozmiar i podjęta zostanie próba źle napisanego zapytania, które na przykład wykonuje bardzo duże sprzężenie krzyżowe.
Możesz użyć tego zapytania, aby zobaczyć bieżący rozmiar magazynu wersji w tempdb:
SELECT *
FROM sys.dm_os_performance_counters dopc
WHERE dopc.counter_name LIKE 'Version %';
Technet ma interesujący artykuł na temat korzystania ze sklepu z wersjami na https://technet.microsoft.com/en-us/library/cc966545.aspx#EDAA
Ta strona MSDN wspomina o błędzie 3967:
Gdy w tempdb zabraknie miejsca, aparat bazy danych zmusza magazyny wersji do zmniejszenia. Podczas procesu zmniejszania najdłużej działające transakcje, które nie wygenerowały jeszcze wersji wierszy, są oznaczane jako ofiary. Komunikat 3967 jest generowany w dzienniku błędów dla każdej transakcji ofiary. Jeśli transakcja jest oznaczona jako ofiara, nie może już czytać wersji wiersza w sklepie z wersjami. Podczas próby odczytu wersji wiersza generowany jest komunikat 3966, a transakcja jest wycofywana. Jeśli proces zmniejszania się powiedzie, przestrzeń będzie dostępna w tempdb.
Żadna ze stron, które podlinkowałem powyżej, nie zawiera wyraźnych porad na temat maksymalnego rozmiaru magazynu wersji w tempdb, co prowadzi mnie do przekonania, że jedynym ograniczeniem jest maksymalny skonfigurowany rozmiar samej tempdb, pomniejszonej o to, ile miejsca używa się w tempdb dla inne przedmioty.