Серйозність 17 вказує на те, що у SQL Server не вистачає необхідного ресурсу. Зазвичай ви бачите це, коли в базі даних не вистачає місця. У цьому випадку це здається, що tempdb використовується для зчитування рядків версії ізоляції знімків для читання рядків для запиту, який потрібно пролити до tempdb.
Це може бути досить часто, якщо tempdb має обмежений максимальний розмір і намагається погано записаний запит, який, наприклад, виконує дуже велике перехресне з'єднання.
Ви можете використовувати цей запит, щоб побачити поточний розмір магазину версій у tempdb:
SELECT *
FROM sys.dm_os_performance_counters dopc
WHERE dopc.counter_name LIKE 'Version %';
Technet має цікаву статтю про використання магазину версій за адресою https://technet.microsoft.com/en-us/library/cc966545.aspx#EDAA
На цій сторінці MSDN згадується помилка 3967:
Коли tempdb не вистачає місця, Database Engine змушує магазини версій скорочуватися. Під час процесу скорочення найдовші операції, які ще не створили версії рядків, позначаються як жертви. Повідомлення 3967 генерується в журналі помилок для кожної транзакції жертви. Якщо транзакція позначена як жертва, вона більше не може читати версії рядків у сховищі версій. Коли він намагається прочитати версії рядків, повідомлення 3966 генерується і транзакція повертається назад. Якщо процес скорочення вдається, простір стає доступним у tempdb.
Жодна зі сторінок, на які я посилався вище, не містить явної поради щодо максимального розміру зберігання версій у tempdb, що призводить до того, що єдиним обмеженням є максимально налаштований розмір самого tempdb за вирахуванням того, що простір використовується в tempdb для інші об’єкти.