KB3181444 - FIX: запити, які виконуються з додатковими базами даних, завжди повторно компілюються в SQL Server

Застосовується до
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

Ознаки

Припустімо, що ви використовуєте функцію груп доступності AlwaysOn у Microsoft SQL ServerSQL Server 2012, 2014 або 2016. Щоразу під час виконання запиту до додаткової бази даних він компілюється повторно. Ця проблема виникає через те, що статистика неправильно передається з головного сервера на додатковий. Якщо ви запустите трасування профілювальника, ви знайдете щось подібне з наступним про StatMan , що означає, що SQL сервер запитує статистику:

SELECT StatMan([SC0], [SB0000]) FROM (SELECT TOP 100 PERCENT [SC0], step_direction([SC0]) over (order by NULL) AS [SB0000] FROM (SELECT [XXX] AS [SC0] FROM [dbo].[ XXX] СИСТЕМА ТАБЛИЦЬ (7.033584e-001 ВІДСОТКІВ) З (READUNCOMMITTED) ) ЯК _MS_UPDSTATS_TBL_HELPER ORDER BY [SC0], [SB0000] ) ЯК _MS_UPDSTATS_TBL OPTION (MAXDOP 1)

Примітка. Якщо вимкнути параметр "Автоматичне оновлення статистики" або ввімкнути автоматичне оновлення статистики асинхронно, ця проблема не виникає.

Спосіб усунення проблеми

Вперше виправлено цю проблему в наступному сукупному оновленні SQL ServerSQL Server:

Рекомендація: інсталюйте останній сукупний пакет оновлень для SQL Server

Кожне нове сукупне оновлення для SQL Server містить усі виправлення та виправлення системи безпеки, які входили до попереднього сукупного пакета оновлень. Радимо завантажити та інсталювати останні сукупні оновлення для SQL Server.

Посилання

Дізнайтеся, за допомогою яких термінів корпорація Майкрософт описує оновлення програмного забезпечення.