Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

MSSQL_ALWAYSON_DEPLOY 1С:Предприятие и СУБД

Развертывание и траблшутинг AlwaysOn Availability Groups в MSSQL

Обновлено: 26.08.2026 · Официальная документация ↗

Сложности при развертывании и эксплуатации AlwaysOn Availability Groups:

  • Группа доступности переходит в статус 'Not Synchronizing / Resolving';
  • Сетевой слушатель (Availability Group Listener) недоступен по DNS или IP-адресу;
  • Служба Windows Server Failover Cluster (WSFC) теряет кворум, приводя к падению всех реплик группы;
  • Блокировки и задержки репликации в базах 1С:Предприятие.

1. Предварительные требования и включение функции AlwaysOn

Все ноды должны входить в состав Windows Server Failover Cluster (WSFC). Включите поддержку AlwaysOn в SQL Server Configuration Manager или через PowerShell:

Enable-SqlAlwaysOn -Path 'SQLSERVER:\SQL\NODE1\DEFAULT' -Force

2. Создание группы доступности через T-SQL

USE [master];
GO
CREATE AVAILABILITY GROUP [AG_1C]
WITH (AUTOMATED_BACKUP_PREFERENCE = SECONDARY,
      FAILURE_CONDITION_LEVEL = 3,
      HEALTH_CHECK_TIMEOUT = 30000)
FOR DATABASE [ERP_1C]
REPLICA ON 
N'SQL-NODE1' WITH (
    ENDPOINT_URL = N'TCP://SQL-NODE1.corp.local:5022',
    FAILOVER_MODE = AUTOMATIC,
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
    BACKUP_PRIORITY = 50,
    SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL)
),
N'SQL-NODE2' WITH (
    ENDPOINT_URL = N'TCP://SQL-NODE2.corp.local:5022',
    FAILOVER_MODE = AUTOMATIC,
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
    BACKUP_PRIORITY = 50,
    SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL)
);
GO

3. Создание сетевого слушателя (AG Listener)

ALTER AVAILABILITY GROUP [AG_1C]
ADD LISTENER N'AG-1C-LISTENER' (
    WITH IP ((N'192.168.10.150', N'255.255.255.0')),
    PORT = 1433
);
GO

4. Диагностика состояния через динамические представления (DMV)

SELECT 
    r.replica_server_name,
    d.database_name,
    s.synchronization_state_desc,
    s.synchronization_health_desc,
    s.redo_queue_size,
    s.log_send_queue_size
FROM sys.dm_hadr_database_replica_states s
JOIN sys.availability_replicas r ON s.replica_id = r.replica_id
JOIN sys.availability_databases_cluster d ON s.group_database_id = d.group_database_id;
💡 Практика специалистов: При подключении 1С:Предприятие к AlwaysOn Listener обязательно используйте параметр MultiSubnetFailover=True в строке соединения, если ноды кластера расположены в разных IP-подсетях.

Частые вопросы (FAQ)

Почему Listener не переключается при сбое основного узла?

Проверьте права учетной записи кластера в Active Directory (объект CNO должен иметь право 'Create Computer Objects' в OU, где создается виртуальное имя слушателя), а также настройки кворума кластера WSFC.

Поддерживается ли AlwaysOn в редакции SQL Server Standard?

В редакции Standard поддерживаются Basic Availability Groups (ограничение: ровно одна база данных на группу, отсутствие вторичного чтения и бэкапов на реплике). Полноценный AlwaysOn требует редакции Enterprise.

Что означает статус реплики 'Resolving'?

Статус Resolving указывает на то, что узел временно потерял связь с кластером WSFC, либо происходит процесс голосования/перехода ролей (failover transitions).

Как перевести реплику в статус Read-Only для снятия отчетов?

Настройте SECONDARY_ROLE(ALLOW_CONNECTIONS = READ_ONLY) и сконфигурируйте список маршрутизации только для чтения (ReadOnly Routing List).

Полезные материалы
Рекомендуем