Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server
Для создания распределенной группы доступности необходимо создать две группы доступности, каждая из которых имеет собственный прослушиватель. После этого можно объединить эти группы доступности в распределенную группу доступности. Ниже представлен простой пример c Transact-SQL. В этом примере представлены не все детали создания групп доступности и прослушивателей; основное внимание уделяется ключевым требованиям.
Технические сведения о распределенных группах доступности см. в статье Распределенные группы доступности.
Предварительные требования
Чтобы настроить распределенную группу доступности, необходимо иметь следующее:
- Поддерживаемая версия SQL Server.
Примечание.
Если вы настроили прослушиватель для группы доступности на виртуальной машине Azure с помощью распределенного сетевого имени (DNN), настройка распределенной группы доступности на вершине группы доступности не поддерживается. Дополнительные сведения см. в статье Взаимодействие функций SQL Server на виртуальной машине Azure с группами доступности и прослушивателем DNN.
Разрешения
Для создания группы доступности требуется разрешение CREATE AVAILABILITY GROUP на сервере, а для выполнения отработки отказа распределенной группы доступности — sysadmin.
Настройка конечных точек зеркального отображения базы данных для прослушивания всех IP-адресов
Убедитесь, что конечные точки зеркального отображения базы данных могут взаимодействовать между различными группами доступности в распределенной группе доступности. Если для одной группы доступности задана определенная сеть в конечной точке зеркального отображения базы данных, распределенная группа доступности не работает должным образом. На каждом сервере, на котором размещена реплика в распределенной группе доступности, задайте конечную точку зеркального отображения базы данных для прослушивания всех IP-адресов (LISTENER_IP = ALL).
Создайте конечную точку для зеркалирования базы данных, чтобы прослушивать все IP-адреса
Например, следующий сценарий создает новую конечную точку зеркального отображения базы данных на TCP-порте 5022, который прослушивает все IP-адреса.
CREATE ENDPOINT [aodns-hadr]
STATE = STARTED
AS TCP
(
LISTENER_PORT = 5022,
LISTENER_IP = ALL
)
FOR DATABASE_MIRRORING
(
ROLE = ALL,
AUTHENTICATION = WINDOWS NEGOTIATE,
ENCRYPTION = REQUIRED ALGORITHM AES
);
GO
Измените существующую конечную точку зеркального отображения базы данных для прослушивания всех IP-адресов
Например, следующий скрипт изменяет существующую конечную точку зеркального отображения базы данных для прослушивания всех IP-адресов.
ALTER ENDPOINT [aodns-hadr]
AS TCP
(
LISTENER_IP = ALL
);
GO
Создание первой группы доступности
Создание первичной группы доступности в первом кластере
Создайте группу доступности в первом отказоустойчивом кластере Windows Server (WSFC). В этом примере это группа доступности с именем ag1 для базы данных db1. Первичная реплика первичной группы доступности в распределенной группе доступности называется глобальной первичной репликой. В этом примере Server1 — глобальный основной сервер.
CREATE AVAILABILITY GROUP [ag1]
FOR DATABASE db1
REPLICA ON N'server1' WITH (ENDPOINT_URL = N'TCP://server1.contoso.com:5022',
FAILOVER_MODE = AUTOMATIC,
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
BACKUP_PRIORITY = 50,
SECONDARY_ROLE(ALLOW_CONNECTIONS = NO),
SEEDING_MODE = AUTOMATIC),
N'server2' WITH (ENDPOINT_URL = N'TCP://server2.contoso.com:5022',
FAILOVER_MODE = AUTOMATIC,
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
BACKUP_PRIORITY = 50,
SECONDARY_ROLE(ALLOW_CONNECTIONS = NO),
SEEDING_MODE = AUTOMATIC);
GO
Примечание.
В предыдущем примере используется автоматическое присвоение начальных значений, где SEEDING_MODE получает значение AUTOMATIC как для реплик, так и для распределенной группы доступности. С такой конфигурацией вторичные реплики и вторичная группа доступности заполняются автоматически и не требуют резервного копирования и восстановления первичной базы данных вручную.
Присоединение вторичной реплики к первичной группе доступности
Все вторичные реплики необходимо присоединить к группе доступности с помощью ALTER AVAILABILITY GROUP с параметром JOIN. Так как в этом примере используется автоматическая инициализация, необходимо также вызвать ALTER AVAILABILITY GROUP с параметром GRANT CREATE ANY DATABASE. Это позволяет группе доступности создать базу данных и начать ее автоматическое заполнение из первичной реплики.
В этом примере во вторичной реплике server2выполняются указанные ниже команды, предназначенные для присоединения группы доступности ag1 . После этого группа доступности получает возможность создавать базы данных во вторичной реплике.
ALTER AVAILABILITY GROUP [ag1] JOIN
ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE
GO
Примечание.
Когда группа доступности создает базу данных во вторичной реплике, она устанавливает в качестве владельца базы данных учетную запись, от имени которой была выполнена инструкция ALTER AVAILABILITY GROUP, предоставляя этой учетной записи разрешение на создание любых баз данных. Полные сведения см. в разделе Предоставление группе доступности разрешения на создание базы данных на вторичной реплике.
Создание прослушивателя для первичной группы доступности
После этого добавьте прослушиватель для первичной группы доступности в первый кластер WSFC. В этом примере прослушиватель имеет имя ag1-listener. Подробные инструкции по созданию прослушивателя см. в разделе Создание или настройка прослушивателя группы доступности (SQL Server).
ALTER AVAILABILITY GROUP [ag1]
ADD LISTENER 'ag1-listener' (
WITH IP ( ('2001:db88:f0:f00f::cf3c'),('2001:4898:e0:f213::4ce2') ) ,
PORT = 60173);
GO
Создание второй группы доступности
Создайте вторую группу доступности, ag2, во втором кластере WSFC. В этом случае база данных не указана, так как она автоматически заполняется из первичной группы доступности. В распределённой группе доступности первичная реплика вторичной группы доступности называется сервером-посредником. Server3 — это сервер пересылки в нашем примере.
CREATE AVAILABILITY GROUP [ag2]
FOR
REPLICA ON N'server3' WITH (ENDPOINT_URL = N'TCP://server3.contoso.com:5022',
FAILOVER_MODE = MANUAL,
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
BACKUP_PRIORITY = 50,
SECONDARY_ROLE(ALLOW_CONNECTIONS = NO),
SEEDING_MODE = AUTOMATIC),
N'server4' WITH (ENDPOINT_URL = N'TCP://server4.contoso.com:5022',
FAILOVER_MODE = MANUAL,
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
BACKUP_PRIORITY = 50,
SECONDARY_ROLE(ALLOW_CONNECTIONS = NO),
SEEDING_MODE = AUTOMATIC);
GO
Примечание.
- Во вторичной группе доступности необходимо использовать ту же конечную точку зеркального отображения базы данных (в этом примере — порт 5022). В противном случае после локального переключения при отказе репликация остановится.
- Базовые группы доступности должны находиться в одинаковом режиме доступности - либо обе группы должны быть в синхронном режиме фиксации, либо обе должны быть в асинхронном режиме фиксации. Если вы не уверены, какой из них следует использовать, установите оба в режим асинхронной фиксации, пока не будете готовы к переключению в случае отказа.
Присоедините вторичные реплики к вторичной группе доступности
В этом примере во вторичной реплике server4выполняются указанные ниже команды, предназначенные для присоединения группы доступности ag2 . После этого группа доступности получает возможность создавать базы данных во вторичной реплике для автоматического присвоения начальных значений.
ALTER AVAILABILITY GROUP [ag2] JOIN
ALTER AVAILABILITY GROUP [ag2] GRANT CREATE ANY DATABASE
GO
Создайте прослушиватель для вторичной группы доступности
Затем добавьте прослушиватель для вторичной группы доступности во втором кластере WSFC. В этом примере прослушиватель имеет имя ag2-listener. Подробные инструкции по созданию прослушивателя см. в разделе Создание или настройка прослушивателя группы доступности (SQL Server).
ALTER AVAILABILITY GROUP [ag2]
ADD LISTENER 'ag2-listener' ( WITH IP ( ('2001:db88:f0:f00f::cf3c'),('2001:4898:e0:f213::4ce2') ) , PORT = 60173);
GO
Создание распределенной группы доступности в первом кластере
В первом WSFC создайте распределенную группу доступности (в этом примере она называется distributedAG ).
CREATE AVAILABILITY GROUP Используйте команду с параметром DISTRIBUTED. Параметр AVAILABILITY GROUP ON задает группы доступности членов ag1 и ag2.
Чтобы создать распределенную группу доступности с помощью автоматического заполнения, используйте следующий код Transact-SQL:
CREATE AVAILABILITY GROUP [distributedAG]
WITH (DISTRIBUTED)
AVAILABILITY GROUP ON
'ag1' WITH
(
LISTENER_URL = 'tcp://ag1-listener.contoso.com:5022',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL,
SEEDING_MODE = AUTOMATIC
),
'ag2' WITH
(
LISTENER_URL = 'tcp://ag2-listener.contoso.com:5022',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL,
SEEDING_MODE = AUTOMATIC
);
GO
Примечание.
LISTENER_URL задает прослушиватель для каждой группы доступности, а также конечную точку зеркального отображения базы данных этой группы доступности. В этом примере это порт 5022 (а не порт 60173 , который использовался для создания прослушивателя). Если вы используете балансировщик нагрузки, например в Azure, добавьте правило балансировки нагрузки для порта распределенной группы доступности. Добавьте правило для порта прослушивателя в дополнение к порту экземпляра SQL Server.
Отменить автоматическое начальное заполнение для экспедитора
Если по какой-либо причине потребуется отменить инициализацию пересылателя до того, как две группы доступности будут синхронизированы, измените распределённую группу доступности с помощью ALTER, установив для параметра SEEDING_MODE пересылателя значение MANUAL, и немедленно отмените начальное заполнение. Выполните команду на глобальном основном сервере:
-- Cancel automatic seeding. Connect to global primary but specify DAG AG2
ALTER AVAILABILITY GROUP [distributedAG]
MODIFY
AVAILABILITY GROUP ON
'ag2' WITH
( SEEDING_MODE = MANUAL );
Присоединить распределенную группу доступности ко второму кластеру
Затем присоедините распределенную группу доступности ко второму кластеру WSFC.
Чтобы присоединиться к распределенной группе доступности с помощью автоматического заполнения, используйте следующий код Transact-SQL:
ALTER AVAILABILITY GROUP [distributedAG]
JOIN
AVAILABILITY GROUP ON
'ag1' WITH
(
LISTENER_URL = 'tcp://ag1-listener.contoso.com:5022',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL,
SEEDING_MODE = AUTOMATIC
),
'ag2' WITH
(
LISTENER_URL = 'tcp://ag2-listener.contoso.com:5022',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL,
SEEDING_MODE = AUTOMATIC
);
GO
Присоединение базы данных к вторичной группе доступности
Если вторая группа доступности была настроена для использования автоматического заполнения, перейдите к шагу 2.
Если во второй группе доступности используется ручное заполнение, то восстановите резервную копию, которую вы создали на глобальной первичной реплике, на вторичную реплику второй группы доступности:
RESTORE DATABASE [db1] FROM DISK = '<full backup location>' WITH NORECOVERY; RESTORE LOG [db1] FROM DISK = '<log backup location>' WITH NORECOVERY;Когда база данных во вторичной реплике второй группы доступности перейдет в состояние восстановления, вам нужно вручную присоединить ее к группе доступности.
ALTER DATABASE [db1] SET HADR AVAILABILITY GROUP = [ag2];
Переключение при отказе распределенной группы доступности
Так как в SQL Server 2022 (16.x) появилась поддержка распределенной группы доступности для REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT параметра, инструкции по отработки отказа распределенной доступности отличаются для SQL Server 2022 и более поздних версий, чем для SQL Server 2019 и более ранних версий.
Для распределенной группы доступности единственным поддерживаемым типом переключения при отказе является инициируемое пользователем вручную FORCE_FAILOVER_ALLOW_DATA_LOSS. Таким образом, чтобы предотвратить потерю данных, нужно предпринять дополнительные действия (подробно описанные в этом разделе), чтобы обеспечить синхронизацию данных между двумя репликами перед инициированием переключения при отказе.
В случае аварийной ситуации, когда потеря данных допустима, можно инициировать переключение на резерв без обеспечения синхронизации данных, выполнив команду:
ALTER AVAILABILITY GROUP distributedAG FORCE_FAILOVER_ALLOW_DATA_LOSS;
Вы можете использовать ту же команду, чтобы выполнить переключение при отказе на сервер-пересылатель, а также обратное переключение на глобальный первичный сервер.
В SQL Server 2022 (16.x) и более поздних версиях можно настроить параметр REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT для распределенной группы доступности, который предназначен для гарантии отсутствия потери данных при переключении после отказа распределенной группы доступности. Если этот параметр настроен, выполните действия, описанные в этом разделе, чтобы выполнить отработку отказа для распределенной группы доступности. Если вы не хотите использовать параметр REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT, следуйте инструкциям по переключению при отказе распределённой группы доступности в SQL Server 2019 и более ранних версиях.
Примечание.
Установка REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT на значение 1 означает, что главная реплика ждет фиксации транзакций на вторичной реплике, пока не будут зафиксированы на главной реплике, что может снизить производительность. Хотя для синхронизации распределенной группы доступности в SQL Server 2022 (16.x) не требуется ограничение или остановка транзакций в глобальной первичной среде, это может повысить производительность как для транзакций пользователей, так и для синхронизации распределенной группы доступности с REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT задано значение 1.
Действия по обеспечению отсутствия потери данных
Чтобы обеспечить отсутствие потери данных, сначала необходимо настроить распределенную группу доступности, чтобы не потерять данные, выполнив следующие действия.
- Чтобы подготовиться к отработке отказа, убедитесь, что глобальный первичный и переадресатор находятся в
SYNCHRONOUS_COMMITрежиме. Если нет, задайте для них значениеSYNCHRONOUS_COMMITALTER AVAILABILITY GROUP. - Задайте распределенной группе доступности синхронный режим фиксации как на , так и на глобальном первичном и агенте-пересылателе.
- Дождитесь синхронизации распределенной группы доступности.
- В глобальной первичной группе доступности задайте для параметра распределенной группы
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMITдоступности значение 1 с помощью ALTER AVAILABILITY GROUP. - Убедитесь, что все реплики в локальных группах доступности и распределённой группе доступности находятся в рабочем состоянии, а распределённая группа доступности СИНХРОНИЗИРОВАНА.
- На глобальной первичной реплике установите для роли распределенной группы доступности значение
SECONDARY, что сделает распределенную группу доступности недоступной. - На сервере forwarder (предполагаемом новом первичном сервере) выполните отработку отказа распределенной группы доступности с помощью ALTER AVAILABILITY GROUP и
FORCE_FAILOVER_ALLOW_DATA_LOSS. - В новой вторичной (предыдущей глобальной первичной реплике) задайте для распределенной группы доступности
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMITзначение 0. - Необязательно. Если группы доступности находятся на географическом расстоянии, что приводит к задержке, измените режим доступности на
ASYNCHRONOUS_COMMIT. При необходимости это отменяет изменения, внесенные на первом шаге.
Пример T-SQL
В этом разделе приводятся шаги в подробном примере для переключения распределенной группы доступности с именем distributedAG с помощью Transact-SQL. В примере среды имеется всего 4 узла для распределенной группы доступности. Глобальная первичная группа доступности узлов N1 и N2, а также группа доступности узлов пересылки ag1 и N4. Распределенная группа доступности distributedAG отправляет изменения из ag1 в ag2.
Запрос на проверку
SYNCHRONOUS_COMMITна первичных объектах локальных групп доступности, формирующих распределенную группу доступности. Запустите следующий T-SQL непосредственно на сервере пересылки и глобальном первичном сервере:SELECT DISTINCT ag.name AS [Availability Group], ar.replica_server_name AS [Replica], ar.availability_mode_desc AS [Availability Mode] FROM sys.availability_replicas AS ar INNER JOIN sys.availability_groups AS ag ON ar.group_id = ag.group_id INNER JOIN sys.dm_hadr_database_replica_states AS rs ON ar.group_id = rs.group_id AND ar.replica_id = rs.replica_id WHERE ag.name IN ('ag1', 'ag2') AND rs.is_primary_replica = 1 ORDER BY [Availability Group]; --if needed, to set a given replica to SYNCHRONOUS for node N1, default instance. If named, change from N1 to something like N1\SQL22 ALTER AVAILABILITY GROUP [testag] MODIFY REPLICA ON N'N1\SQL22' WITH (AVAILABILITY_MODE = SYNCHRONOUS_COMMIT);Переведите распределённую группу доступности в режим синхронной фиксации, выполнив следующий код на обоих серверах: глобальной первичной реплике и сервере пересылки:
-- sets the distributed availability group to synchronous commit ALTER AVAILABILITY GROUP [distributedAG] MODIFY AVAILABILITY GROUP ON 'ag1' WITH (AVAILABILITY_MODE = SYNCHRONOUS_COMMIT), 'ag2' WITH (AVAILABILITY_MODE = SYNCHRONOUS_COMMIT);Примечание.
В распределенной группе доступности состояние синхронизации между двумя группами доступности зависит от режима доступности обеих реплик. Для режима синхронной фиксации текущая основная группа доступности и текущая вторичная группа доступности должны быть настроены с режимом доступности
SYNCHRONOUS_COMMIT. По этой причине необходимо запустить этот сценарий как на глобальной первичной реплике, так и на сервере пересылки.Подождите, пока состояние распределенной группы доступности изменится на
SYNCHRONIZED. Выполните следующий запрос на глобальном первичном сервере:-- Run this query on the Global Primary -- Check the results to see if synchronization_state_desc is SYNCHRONIZED SELECT ag.name, drs.database_id AS [Availability Group], db_name(drs.database_id) AS database_name, drs.synchronization_state_desc, drs.last_hardened_lsn FROM sys.dm_hadr_database_replica_states AS drs INNER JOIN sys.availability_groups AS ag ON drs.group_id = ag.group_id WHERE ag.name = 'distributedAG' ORDER BY [Availability Group];Продолжайте после того, как группы доступности
будет . Для SQL Server 2022 (16.x) и более поздних версий в глобальной основной среде задайте для
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMITзначение 1 с помощью следующего T-SQL:ALTER AVAILABILITY GROUP distributedAG SET (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 1);Убедитесь, что группы доступности работоспособны на всех репликах, запрашивая глобальную первичную реплику и пересылочный сервер.
SELECT ag.name AS [AG Name], db_name(drs.database_id) AS database_name, ar.replica_server_name AS [replica], drs.synchronization_state_desc, drs.last_hardened_lsn FROM sys.dm_hadr_database_replica_states AS drs INNER JOIN sys.availability_groups AS ag ON drs.group_id = ag.group_id INNER JOIN sys.availability_replicas AS ar ON drs.replica_id = ar.replica_id AND drs.replica_id = ar.replica_id WHERE ag.name IN ('ag1', 'ag2', 'distributedAG');На глобальной первичной реплике задайте для роли распределенной группы доступности значение
SECONDARY. На этом этапе распределенная группа доступности недоступна. После завершения этого шага вы не сможете выполнить откат изменений до тех пор, пока не будут выполнены остальные действия.ALTER AVAILABILITY GROUP distributedAG SET (ROLE = SECONDARY);Переключение с глобального первичного сервера путем выполнения следующего запроса на сервере пересылки для переключения групп доступности и возобновления работы распределенной группы доступности.
-- Run the following command on the forwarder, the SQL Server instance that hosts the primary replica of the secondary availability group. ALTER AVAILABILITY GROUP distributedAG FORCE_FAILOVER_ALLOW_DATA_LOSS;После этого шага:
- Глобальный первичный переход от
N1кN3. - Переадресатор переключается с
N3наN1. - Доступна распределенная группа доступности.
- Глобальный первичный переход от
На новом агрегационном сервере (ранее глобальный первичный,
N1), очистите свойство распределённой группы доступностиREQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT, установив для него значение 0:ALTER AVAILABILITY GROUP distributedAG SET (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 0);НЕОБЯЗАТЕЛЬНО: Если группы доступности разнесены географически, что вызывает задержки, рассмотрите возможность изменить режим доступности обратно на
ASYNCHRONOUS_COMMITна как глобальной первичной реплике, так и на сервере пересылки. Это отменяет изменения, внесенные на первом шаге, если это необходимо.-- If applicable: sets the distributed availability group to asynchronous commit: ALTER AVAILABILITY GROUP distributedAG MODIFY AVAILABILITY GROUP ON 'ag1' WITH (AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT), 'ag2' WITH (AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT);
Удаление распределенной группы доступности
Следующая инструкция Transact-SQL удаляет распределенную группу доступности с именем distributedAG:
DROP AVAILABILITY GROUP distributedAG;
Создать распределенную группу доступности на экземплярах отказоустойчивого кластера
Вы можете создать распределенную группу доступности, используя группу доступности на экземпляре отказоустойчивого кластера (FCI). В этом случае прослушиватель группы доступности не требуется. Используйте имя виртуальной сети (VNN) для первичной реплики экземпляра FCI. В следующем примере показана распределенная группа доступности с именем SQLFCIDAG. Одна из групп доступности — SQLFCIAG. SQLFCIAG содержит две реплики FCI. VNN для первичной реплики FCI — SQLFCIAG-1, а VNN для вторичной реплики FCI — SQLFCIAG-2. Распределенная группа доступности также включает в себя SQLAG-DR для аварийного восстановления.
Следующий DDL создает эту распределенную группу доступности:
CREATE AVAILABILITY GROUP [SQLFCIDAG]
WITH (DISTRIBUTED)
AVAILABILITY GROUP ON
'SQLFCIAG' WITH
(
LISTENER_URL = 'tcp://SQLFCIAG-1.contoso.com:5022',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL,
SEEDING_MODE = AUTOMATIC
),
'SQLAG-DR' WITH
(
LISTENER_URL = 'tcp://SQLAG-DR.contoso.com:5022',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL,
SEEDING_MODE = AUTOMATIC
);
URL-адрес прослушивателя — это виртуальное сетевое имя (VNN) основного экземпляра FCI.
Вручную выполнить переключение при отказе FCI в распределенной группе доступности
Чтобы вручную выполнить отработку отказа группы доступности FCI, обновите распределенную группу доступности, чтобы отразить изменение URL-адреса прослушивателя. Например, выполните следующую команду DDL на глобальном первичном экземпляре распределенной группы доступности и на сервере пересылки распределенной группы доступности SQLFCIDAG:
ALTER AVAILABILITY GROUP [SQLFCIDAG]
MODIFY AVAILABILITY GROUP ON
'SQLFCIAG' WITH
(
LISTENER_URL = 'tcp://SQLFCIAG-2.contoso.com:5022'
)