консоль System Center Service Manager работает медленно после обновления SQL Server

Эта статья поможет устранить проблему, из-за которой Service Manager консоль становится медленной после обновления до Microsoft SQL Server 2014 или более поздней версии.

Исходная версия продукта: System Center 2016 Service Manager, System Center 2012 R2 Service Manager
Исходный номер базы знаний: 4056822

Признак

После обновления до SQL Server 2014 или более поздней версии программы System Center Service Manager консоль становится медленной.

Кроме того, после добавления пользователя в роль Администраторы производительность этого пользователя будет нормальной.

Причина

Проблема возникает из-за того, что запросы Service Manager предназначены для выполнения по оценщику кратности SQL Server 2012 года.

Разрешение

Сначала проверка текущий уровень совместимости с помощью следующего SQL-запроса:

Use ServiceManager
Select Name, Compatibility_Level from sys.databases Where name = 'ServiceManager'
  • Если текущий уровень совместимости равен 110, эта статья не применяется к вашей системе.
  • Если текущий уровень совместимости превышает 110, используйте один из следующих методов для повышения производительности.

Способ 1. Изменение уровня совместимости базы данных ServiceManager на 110 (SQL Server 2012 г.)

Для этого используйте следующий запрос:

ALTER DATABASE ServiceManager
SET COMPATIBILITY_LEVEL = 110

Метод 2. Установка существующего экземпляра SQL Server для запуска с флагом трассировки 9481 для использования оценщика кратности SQL Server 2012

Для этого выполните следующие действия.

  1. Откройте диспетчер конфигурации SQL Server и выберите службы SQL Server.
  2. Щелкните правой кнопкой мыши используемый экземпляр SQL Server, выберите Свойства, а затем перейдите на вкладку Параметры запуска.
  3. Введите -T9481 в текстовом поле и нажмите кнопку Добавить.

Примечание.

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

Метод 3. Изменение хранимой процедуры p_UserRoleSelectAccessToMultipleEntities ServiceManager путем добавления OPTION (QUERYTRACEON 9481)

Для этого используйте следующий запрос:

IF (0 = @ReturnUserRoleInfo)
 BEGIN
       INSERT INTO #BaseManagedEntityWithUserRoleInstanceScope
       SELECT T.[BaseManagedEntityId], T.[UserRoleId], NULL AS [ScopeId]
       FROM
       (
            SELECT E.[BaseManagedEntityId], E.UserRoleId
            FROM #BaseManagedEntityWithUserRoleOperationTypeScope E
            INNER JOIN dbo.[RecursiveMembership] as RM
            ON E.[BaseManagedEntityId] = RM.[ContainedEntityId]
            INNER JOIN #UserRoleWithScope AS L
            ON E.[UserRoleId] = L.[UserRoleId]
            INNER JOIN dbo.[UserRoleGroupType] AS URIS
            ON (URIS.[GroupId] = RM.[ContainerEntityId] OR (URIS.[GroupId] IS NULL))
            AND (URIS.TypeId IS NULL)
            AND (URIS.[ScopeType] = 2 OR URIS.[ScopeType] = 8)
            AND (URIS.[ScopeId] = L.[ScopeId])
            UNION ALL
            SELECT E.[BaseManagedEntityId], E.UserRoleId
            FROM #BaseManagedEntityWithUserRoleOperationTypeScope E
            INNER JOIN dbo.[RecursiveMembership] as RM
            ON E.[BaseManagedEntityId] = RM.[ContainedEntityId]
            INNER JOIN dbo.[TypedManagedEntity] AS TMECONTAINER
            ON RM.[ContainerEntityId] = TMECONTAINER.BaseManagedEntityId
            INNER JOIN dbo.[DerivedManagedTypes] AS DMTCONTAINER
            ON TMECONTAINER.[ManagedTypeId] = DMTCONTAINER.DerivedTypeId
            INNER JOIN #UserRoleWithScope AS L
            ON E.[UserRoleId] = L.[UserRoleId]
            INNER JOIN dbo.[UserRoleGroupType] AS URIS
            ON  (URIS.TypeId = DMTCONTAINER.[BaseTypeId])
            AND (URIS.TypeId IS NOT NULL)
            AND (URIS.[ScopeType] = 2 OR URIS.[ScopeType] = 8)
            AND (URIS.[ScopeId] = L.[ScopeId])
       ) AS T OPTION (QUERYTRACEON 9481)

Примечание.

Этот метод не устраняет другие SQL-запросы, которые также могут быть настроены для работы с оценщиком кратности SQL Server 2012.