Службы Analysis Services с группами доступности AlwaysOn

Применимо к:SQL Server в Windows

Группа доступности Always On — это предопределенный набор реляционных баз данных SQL Server, которые переключаются при сбое совместно, если возникают условия, вызывающие аварийное переключение любой из этих баз данных, перенаправляя запросы на зеркальную базу данных в другом экземпляре в той же группе доступности. Если группы доступности используются для обеспечения высокой доступности, можно использовать базу данных в этой группе в качестве источника данных в табличном или многомерном решении служб Analysis Services. Если используется база данных доступности, все следующие операции службы Analysis Services работают, как ожидалось: обработка или импорт данных, прямые запросы к базе данных (с использованием хранилища ROLAP или режима DirectQuery) и обратная запись.

Обработка и запросы — нагрузки, предназначенные только для чтения. Можно улучшить производительность, если перегрузить эти рабочие нагрузки на вторичную реплику, доступную для чтения. Для этого сценария требуется дополнительная настройка. Чтобы выполнить все шаги, используйте контрольный список в этом разделе.

Предварительные требования

Необходимо иметь учетные данные SQL Server на всех репликах. Для настройки групп доступности, прослушивателей и баз данных необходимо иметь роль sysadmin, но для доступа к базе данных из клиента Analysis Services пользователям достаточно членства в роли db_datareader.

Используйте поставщик данных, который поддерживает протокол потока табличных данных (TDS) версии 7.4 или новее, например SQL Server Native Client 11.0 или поставщик данных для SQL Server в .NET Framework 4.02.

(Для рабочих нагрузок, предназначенных только для чтения) Роль вторичной реплики должна быть настроена для подключений только для чтения, группа доступности должна иметь список маршрутизации, а подключение в источнике данных служб SQL Server Analysis Services должно указывать прослушиватель группы доступности. Инструкции содержатся в этом разделе.

Контрольный список: использование вторичной реплики только для операций чтения

Если решение Analysis Services не включает обратную запись, можно настроить подключение к источнику данных для использования доступной для чтения вторичной реплики. Если у вас высокоскоростное сетевое подключение, задержка передачи данных у вторичной реплики будет очень мала, поэтому данные на ней будут почти идентичны данным на первичной реплике. Использование вторичной реплики для операций Analysis Services позволяет снизить конфликты между операциями чтения и записи на первичной реплике и повысить эффективность использования вторичных реплик в группе доступности.

По умолчанию к первичной реплике разрешён как доступ для чтения и записи, так и доступ с намерением чтения, а подключения к вторичным репликам не разрешены. Для настройки клиентского подключения только для чтения к вторичной реплике требуется дополнительная настройка. Для такой настройки необходимо задать свойства на вторичной реплике и выполнить скрипт T-SQL, который определяет спискок маршрутизации только для чтения. Используйте следующие процедуры, чтобы выполнить оба шага.

Примечание.

Следующие шаги предполагают, что группа доступности и базы данных AlwaysOn уже существуют. Если настраивается новая группа, используйте мастер создания групп доступности для создания группы и присоединения баз данных. Мастер проверяет выполнение предварительных условий, выдает инструкции для каждого шага и выполняет начальную синхронизацию. Дополнительные сведения см. в статье Использование мастера групп доступности (SQL Server Management Studio).

Шаг 1. Настройка доступа на реплике доступности

  1. В обозревателе объектов подключитесь к экземпляру сервера, на котором размещена первичная реплика, и разверните дерево сервера.

    Примечание.

    Эти шаги взяты из статьи Настройка доступа только для чтения в реплике доступности (SQL Server), где содержатся дополнительные сведения и альтернативные инструкции по выполнению этой задачи.

  2. Разверните узел Высокий уровень доступности AlwaysOn и узел Группы доступности .

  3. Щелкните группу доступности, реплику которой нужно изменить. Разверните Реплики доступности.

  4. Щелкните правой кнопкой мыши вторичную реплику и выберите пункт Свойства.

  5. В диалоговом окне Свойства реплики доступности измените параметр доступа к подключению для вторичной роли следующим образом:

    • В раскрывающемся списке Читаемая вторичная реплика выберите Только намерение чтения.

    • В раскрывающемся списке Подключения в первичной роли выберите Разрешить все подключения. Это значение по умолчанию.

    • Если потребуется, в раскрывающемся списке Режим доступности выберите пункт Синхронная фиксация. Этот шаг необязателен, но обеспечивает равенство данных в первичной и вторичной репликах.

      Это свойство также является обязательным требованием для планового переключения при отказе. Если вы хотите выполнить плановое ручное переключение при отказе в целях тестирования, задайте для обеих реплик — первичной и вторичной — для параметра Режим доступности значение Синхронная фиксация.

Шаг 2. Настройка маршрутизации только для чтения

  1. Подключитесь к первичной реплике.

    Примечание.

    Эти шаги взяты из статьи Настройка маршрутизации только для чтения в группе доступности (SQL Server), где содержатся дополнительные сведения и альтернативные инструкции по выполнению этой задачи.

  2. Откройте окно запроса и вставьте следующий скрипт. Этот сценарий делает три действия: включает подключения для чтения к вторичной реплике (что по умолчанию отключено), задает URL-адрес маршрутизации только для чтения и создает список маршрутизации, согласно которому назначаются приоритеты запросам на подключение. Первая инструкция, разрешающая удобочитаемые подключения, является избыточной, если свойства уже заданы в Management Studio, но включены для полноты.

    ALTER AVAILABILITY GROUP [AG1]  
     MODIFY REPLICA ON  
    N'COMPUTER01' WITH   
    (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));  
    
    ALTER AVAILABILITY GROUP [AG1]  
     MODIFY REPLICA ON  
    N'COMPUTER01' WITH   
    (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433'));  
    
    ALTER AVAILABILITY GROUP [AG1]  
     MODIFY REPLICA ON  
    N'COMPUTER02' WITH   
    (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));  
    
    ALTER AVAILABILITY GROUP [AG1]  
     MODIFY REPLICA ON  
    N'COMPUTER02' WITH   
    (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER02.contoso.com:1433'));  
    
    ALTER AVAILABILITY GROUP [AG1]   
    MODIFY REPLICA ON  
    N'COMPUTER01' WITH   
    (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER02','COMPUTER01')));  
    
    ALTER AVAILABILITY GROUP [AG1]   
    MODIFY REPLICA ON  
    N'COMPUTER02' WITH   
    (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER01','COMPUTER02')));  
    GO  
    
  3. Измените скрипт, заменив заполнители на значения, допустимые для вашего развертывания.

    • Замените "Computer01" именем экземпляра сервера, на котором размещена первичная реплика.

    • Замените "Computer02" на имя экземпляра сервера, на котором размещена вторичная реплика.

    • Замените contoso.com именем домена или удалите его из скрипта, если все компьютеры находятся в одном и том же домене. Сохраните номер порта, если прослушиватель использует порт по умолчанию. Порт, который фактически используется прослушивателем, указан на странице свойств в Management Studio.

  4. Выполните скрипт.

    Теперь создайте в модели служб Analysis Services источник данных, который использует только что настроенную вами базу данных.

Создайте источник данных служб Analysis Services, который использует базу данных доступности AlwaysOn

В этом разделе описывается создание источника данных служб Analysis Services, который подключается к базе данных в группе доступности. Эти инструкции можно использовать для настройки подключения к первичной реплике (по умолчанию) или подключения для чтения к вторичной реплике, которую вы настроили согласно шагам в предыдущем разделе. Параметры конфигурации AlwaysOn, а также свойства подключения, заданные на клиенте, определяют, какая реплика используется — первичная или вторичная.

  1. В SQL Server Data Tools, в проекте Analysis Services для многомерной модели и модели интеллектуального анализа данных, щелкните правой кнопкой мыши Источники данных и выберите Создать источник данных. Нажмите кнопку Создать , чтобы создать новый источник данных.

    Или для проекта табличной модели щелкните меню «Модель» и выберите Импорт из источника данных.

  2. В диспетчере подключений на странице «Поставщик» выберите поставщика, который поддерживает протокол TDS. Собственный клиент SQL Server 11.0 поддерживает этот протокол.

  3. В диспетчере подключений в поле «Имя сервера» введите имя прослушивателя группы доступности, а затем выберите базу данных, доступную в этой группе.

    Прослушиватель группы доступности перенаправляет клиентское подключение на первичную реплику для запросов чтения и записи или на вторичную реплику, если в строке подключения указано намерение чтения. Поскольку во время переключения при отказе роли реплик меняются (первичная реплика становится вторичной, а вторичная — первичной), необходимо всегда указывать прослушиватель, чтобы клиентское подключение перенаправлялось должным образом.

    Чтобы определить имя прослушивателя группы доступности, можно либо обратиться к администратору базы данных, либо подключиться к экземпляру, входящему в группу доступности, и просмотреть его конфигурацию обеспечения высокой доступности Always On.

  4. В диспетчере подключний нажмите кнопку Все в левой части панели навигации для просмотра сетки свойств поставщика данных.

    Задайте свойству Назначение приложения значение READONLY , если вы настраиваете клиентское подключение ко вторичной реплике только для чтения. В противном случае оставьте значение READWRITE по умолчанию, чтобы перенаправить подключение на первичную реплику.

  5. В разделе «Сведения об олицетворении» выберите Использовать конкретные имя пользователя и пароль Windows, а затем введите учетную запись пользователя домена Windows, имеющую как минимум разрешения db_datareader к базе данных.

    Не выбирайте параметр Использовать учетные данные текущего пользователя или Наследовать. Можно выбрать Использовать учетную запись службы, но только если эта учетная запись имеет разрешение на чтение для базы данных.

    Завершите создание источника данных и закройте мастер источников данных.

  6. Добавьте MultiSubnetFailover=Yes в строку подключения, для ускорения обнаружения и подключения к активному серверу. Дополнительные сведения об этом свойстве см. в разделе Поддержка высокого уровня доступности и аварийного восстановления собственного клиента SQL Server.

    Это свойство не отображается в сетке свойств. Чтобы добавить это свойство, щелкните источник данных правой кнопкой мыши и выберите Просмотр кода. Добавьте MultiSubnetFailover=Yes в строку подключения.

Источник данных определен. Теперь можно перейти к созданию модели и начать с создания представления источников данных или, если это табличные модели, с создания связей. Если вы находитесь на этапе, когда необходимо извлечь данные из базы данных доступности (например, когда вы готовы к обработке или развертыванию решения), можно протестировать конфигурацию, чтобы проверить, что обращение к данным происходит из вторичной реплики.

Тестирование конфигурации.

После настройки вторичной реплики и создания подключения к источнику данных в службах Analysis Services, можно убедиться в том, что команды обработки и запросов перенаправляются на вторичную реплику. Можно также выполнить плановую отработку отказа вручную, чтобы проверить план восстановления для этого сценария.

Шаг 1. Проверка перенаправления подключения к источнику данных на вторичную реплику

  1. Запустите приложение SQL Server Profiler и подключитесь к экземпляру SQL Server, на котором находится вторичная реплика.

    Когда выполняется трассировка, события SQL:BatchStarting и SQL:BatchCompleting показывают запросы из служб Analysis Services, работающих на экземпляре компонента Database Engine. Эти события выбираются по умолчанию, поэтому все, что требуется, — это запустить трассировку.

  2. В SQL Server Data Tools откройте проект или решение служб Analysis Services, содержащее подключение к источнику данных, которое требуется проверить. Убедитесь, что источник данных указывает на прослушиватель группы доступности, а не на экземпляр в группе.

    Это важный шаг. Если указано имя экземпляра сервера, маршрутизация к вторичной реплике не выполняется.

  3. Расположите окна приложений, чтобы просмотреть SQL Server Profiler и SQL Server Data Tools параллельно.

  4. Разверните решение и после завершения развертывания остановите трассировку.

    В окне трассировки должны отображаться события из приложения Microsoft SQL Server Analysis Services. Вы должны увидеть операторы SELECT, которые извлекают данные из базы данных на экземпляре сервера, на котором размещена вторичная реплика, что подтверждает, что подключение было выполнено через прослушиватель к вторичной реплике.

Шаг 2: Выполните плановое переключение при отказе, чтобы проверить конфигурацию

  1. В Management Studio проверьте первичную и вторичную реплики, чтобы убедиться, что обе настроены на режим синхронной фиксации и в настоящее время синхронизированы.

    В следующих шагах подразумевается, что вторичная реплика настроена на синхронную фиксацию.

    Чтобы проверить синхронизацию, откройте подключение к каждому экземпляру, на котором находятся первичная и вторичная реплики, откройте папку "Базы данных" и убедитесь в том, что в каждой реплике к имени базы данных добавлено состояние (Синхронизировано) и (Синхронизируется).

    Примечание.

    Эти шаги взяты из статьи Выполнение планового ручного переключения при отказе для группы доступности (SQL Server), в которой приводятся дополнительные сведения и альтернативные инструкции по выполнению этой задачи.

  2. В приложении SQL Server Profiler запустите трассировку для каждой реплики и просматривайте трассировки параллельно. На следующих шагах вы сравните трассировки, чтобы подтвердить, что SQL-запросы, используемые для обработки данных или выполнения запросов к Analysis Services, переключаются с одной реплики на другую.

  3. Выполните команду обработки или запроса из служб Analysis Services. Поскольку источник данных настроен на подключение только для чтения, убедитесь, что команда выполняется на вторичной реплике.

  4. В Management Studio подключитесь к вторичной реплике.

  5. Разверните узел Высокий уровень доступности AlwaysOn и узел Группы доступности .

  6. Щелкните правой кнопкой мыши группу доступности, которую нужно перевести в режим отработки отказа, и выберите команду Отработка отказа. Это запускает мастер отработки отказа для группы доступности. С помощью этого мастера выберите реплику, которая теперь станет первичной.

  7. Убедитесь, что переключение при отказе выполнено успешно.

    • В Management Studio разверните группы доступности, чтобы просмотреть обозначения "(primary)" и "(secondary)". Экземпляр, который был первичной репликой, теперь будет вторичной репликой.

    • Просмотрите панель мониторинга, чтобы определить, были ли обнаружены проблемы с работоспособностью. Щелкните правой кнопкой мыши группу доступности и выберите Показать панель мониторинга.

  8. Подождите одну-две минуты, пока на серверной стороне не завершится переключение на резервный сервер.

  9. Повторите команду обработки или запроса в решении Analysis Services и просматривайте трассировку параллельно в приложении SQL Server Profiler. Вы должны увидеть признаки обработки в другом экземпляре, который теперь является новой вторичной репликой.

Что происходит после переключения на резервный ресурс

Во время переключения при отказе вторичная реплика переходит в основную роль, а бывшая основная реплика — во вторичную роль. Все клиентские соединения завершаются, владение прослушивателем группы доступности переносится на новый экземпляр SQL Server вместе с ролью первичной реплики, а конечная точка прослушивателя привязывается к виртуальным IP-адресам и TCP-портам нового экземпляра. Дополнительные сведения см. в разделе Сведения о доступе клиентских подключений к репликам доступности (SQL Server).

Если переключение на резервный сервер происходит во время обработки, в файле журнала или в окне вывода Analysis Services появляется следующая ошибка: "Ошибка OLE DB: ошибка OLE DB или ODBC: сбой канала связи; 08S01; поставщик TPC: имеющееся подключение было принудительно закрыто удаленным узлом." ; 08S01".

Эта ошибка может исчезнуть, если подождать минуту и попробовать еще раз. Если группа доступности настроена правильно для вторичной реплики, доступной для чтения, при повторной попытке обработка возобновится на новой вторичной реплике.

Ошибки, которые не исчезают, скорее всего вызваны ошибками конфигурации. Попробуйте повторно выполнить скрипт T-SQL, чтобы устранить проблемы со списком маршрутизации, URL-адресами маршрутизации только для чтения и параметром намерения на чтение на вторичной реплике. Необходимо также проверить, что на первичной реплике разрешены все подключения.

Обратная запись, если используется база данных доступности AlwaysOn

Обратная запись — это функция Analysis Services, которая поддерживает анализ «что если» в Excel. Она также часто используется для задач составления бюджета и прогнозирования в пользовательских приложениях.

Для поддержки обратной записи требуется клиентское подключение READWRITE. В Excel при попытке обратной записи при подключении только для чтения возникает следующая ошибка: "Данные не удалось извлечь из внешнего источника данных".

Если подключение настроено так, чтобы всегда обращаться к вторичной реплике для чтения, необходимо теперь настроить новое подключение, использующее подключение READWRITE к первичной реплике.

Для этого создайте дополнительный источник данных в модели служб Analysis Services для поддержки подключения для чтения и записи. Создавая вторичный источник данных, используйте то же имя прослушивателя и ту же базу данных, которые вы указали в подключении только для чтения, но не меняйте Назначение приложения, а оставьте значение по умолчанию, поддерживающее подключения READWRITE. Теперь можно добавить в представление источника данных новые таблицы фактов или измерений, основанные на источнике данных с доступом на чтение и запись, а затем включить обратную запись для новых таблиц.