Устранение ошибки зеркального отображения базы данных 1418: сетевой адрес сервера недоступен

Temp mail SuperHeros
Устранение ошибки зеркального отображения базы данных 1418: сетевой адрес сервера недоступен
Устранение ошибки зеркального отображения базы данных 1418: сетевой адрес сервера недоступен

Общие сведения о проблемах подключения к зеркальному отображению базы данных

Зеркальное отображение базы данных — важная стратегия обеспечения высокой доступности и избыточности в средах SQL Server. Однако настройка зеркалирования иногда может приводить к неприятным ошибкам, таким как ошибка 1418, в которой говорится, что сетевой адрес сервера недоступен или не существует.

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

В данном случае в процессе зеркалирования участвуют локальный рабочий стол (192.168.0.80) и мини-ПК (192.168.0.85). Мини-ПК предназначен для использования в качестве реплики мобильного приложения, доступной только для чтения, с использованием режима зеркалирования «Высокая производительность».

Несмотря на правильную конфигурацию порта и настройки брандмауэра, пользователь сталкивается с ошибкой 1418 при попытке инициировать сеанс зеркалирования. В этой статье будут рассмотрены потенциальные причины и решения этой проблемы.

Команда Пример использования
ALTER ENDPOINT Эта команда используется для изменения состояния конечной точки зеркального отображения базы данных в SQL Server. В контексте устранения ошибки 1418 это гарантирует, что конечная точка правильно запускается и прослушивает указанный порт. Пример: ALTER ENDPOINT [Зеркалирование] STATE = STARTED;
GRANT CONNECT ON ENDPOINT Позволяет определенному логину подключаться к конечной точке зеркалирования. Это крайне важно для обеспечения безопасного взаимодействия экземпляров SQL Server во время зеркального отображения базы данных. Пример: GRANT CONNECT ON ENDPOINT::[Mirroring_Endpoint] TO [DOMAINUserAccount];
SET PARTNER Настраивает один экземпляр SQL Server в качестве партнера в сеансе зеркального отображения базы данных. Эта команда устанавливает сетевой адрес партнерского сервера. Пример: ALTER DATABASE YourDatabaseName SET PARTNER = 'TCP://192.168.0.85:5022';
CREATE ENDPOINT Создает конечную точку зеркального отображения, которая прослушивает определенный порт и управляет сеансами зеркального отображения базы данных. Он определяет коммуникационную роль (например, ПАРТНЕР). Пример: CREATE ENDPOINT [Mirroring_Endpoint] AS TCP (LISTENER_PORT = 5022) FOR DATABASE_MIRRORING (ROLE = PARTNER);
netsh advfirewall firewall add rule Используется для настройки правил брандмауэра, разрешающих трафик через определенные порты, необходимые для SQL Server и зеркалирования (например, 1433 и 5022). Это важно для обеспечения связи между партнерами по зеркалированию. Пример: брандмауэр netsh advfirewall добавить правило name="SQLPort" dir=in action=allow протокол=TCP localport=1433
socket.create_connection Команда Python, используемая для установки TCP-соединения с указанным сервером и портом. В этом контексте он используется для проверки доступности экземпляра SQL Server по сети. Пример: socket.create_connection((сервер, порт), таймаут=5);
New-Object System.Net.Sockets.TcpClient Команда PowerShell, используемая для создания TCP-клиента для проверки подключения порта. Это помогает проверить, открыты ли и доступны ли необходимые порты зеркалирования между серверами. Пример: $tcpClient = New-Object System.Net.Sockets.TcpClient($server, $port)
SELECT * FROM sys.database_mirroring Эта команда SQL получает состояние сеанса зеркального отображения базы данных, помогая диагностировать, правильно ли установлена ​​настройка зеркального отображения или возникли ли проблемы. Пример: SELECT * FROM sys.database_mirroring;

Подробное описание сценариев устранения ошибок зеркалирования

Первый скрипт, представленный в предыдущих примерах, использует Транзакт-SQL (T-SQL) команды для настройки и устранения ошибки зеркального отображения в SQL Server. Самая ответственная часть скрипта — это создание и настройка зеркалирование конечных точек. Эти конечные точки представляют собой сетевые интерфейсы, через которые экземпляры SQL Server взаимодействуют во время зеркального отображения. Команда ИЗМЕНИТЬ КОНЕЧНУЮ ТОЧКУ гарантирует, что конечные точки на обоих серверах находятся в состоянии «STARTED», что позволяет осуществлять связь. СЕТ ПАРТНЕР Затем команда используется для связывания баз данных с указанием сетевого адреса партнерского сервера, что позволяет двум экземплярам SQL зеркально отображать данные по сети.

Второй сценарий — это решение PowerShell, предназначенное для проверки сетевого подключения между двумя серверами. PowerShell использует Новый объект System.Net.Sockets.TcpClient Команда для создания TCP-клиента, который пытается подключиться к указанному IP-адресу и порту. Это эффективный способ убедиться, что необходимые порты (1433 для SQL Server и 5022 для зеркалирования) открыты и доступны. Этот сценарий особенно полезен для диагностики проблем с брандмауэром или сетью, которые могут препятствовать взаимодействию двух экземпляров SQL, что приводит к Ошибка 1418.

Третий сценарий использует команды командной строки Windows для управления настройками брандмауэра. В частности, netsh advfirewall брандмауэр добавить правило Команда используется для открытия необходимых портов для SQL Server и зеркалирования. Это гарантирует, что трафик базы данных (порт 1433) и трафик зеркалирования (порт 5022) могут свободно перемещаться между двумя серверами. Временно отключив брандмауэр с помощью netsh advfirewall отключил состояние всех профилей Команда сценарий может проверить, является ли брандмауэр основной причиной проблемы доступа к сети. Это решение особенно важно при устранении проблем связи с сервером в безопасной среде.

Наконец, сценарий Python использует сокет.create_connection функция для проверки сети между двумя серверами. Этот сценарий обеспечивает быстрый и эффективный способ проверить, могут ли серверы связываться друг с другом через необходимые порты TCP. Он пытается установить соединение и в случае успеха подтверждает правильность настройки сети. Простота Python в решении проблем, связанных с сетью, делает его хорошим выбором для тестирования возможности подключения, особенно в средах, где другие инструменты недоступны или громоздки в использовании. Вместе эти сценарии предлагают комплексный подход к решению зеркальное отображение базы данных ошибка и обеспечение бесперебойной связи между экземплярами SQL Server.

Решение 1. Исправление ошибки 1418 при зеркалировании базы данных SQL Server (подход T-SQL)

В этом решении используется Transact-SQL (T-SQL) для решения проблем зеркального отображения базы данных путем настройки конечных точек, проверки подлинности соединений и проверки адресов серверов.

-- Enable server to listen on the specified ports
ALTER ENDPOINT [Mirroring] 
STATE = STARTED;
GO

-- Ensure both databases are in FULL recovery mode
ALTER DATABASE YourDatabaseName 
SET RECOVERY FULL;
GO

-- Create mirroring endpoints on both servers
CREATE ENDPOINT [Mirroring_Endpoint]
STATE = STARTED
AS TCP (LISTENER_PORT = 5022)
FOR DATABASE_MIRRORING (ROLE = PARTNER);
GO

-- Grant CONNECT permissions to the login account
GRANT CONNECT ON ENDPOINT::[Mirroring_Endpoint] 
TO [DOMAIN\UserAccount];
GO

-- Set up mirroring using T-SQL command
ALTER DATABASE YourDatabaseName 
SET PARTNER = 'TCP://192.168.0.85:5022';
GO

-- Verify the status of the mirroring configuration
SELECT * FROM sys.database_mirroring;
GO

Решение 2. Сценарий PowerShell для проверки доступности порта SQL Server

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

# Define server IPs and ports
$server1 = "192.168.0.80"
$server2 = "192.168.0.85"
$port = 5022

# Function to test port connectivity
function Test-Port {
   param([string]$server, [int]$port)
   try {
       $tcpClient = New-Object System.Net.Sockets.TcpClient($server, $port)
        Write-Host "$server on port $port is reachable."
       $tcpClient.Close()
   } catch {
        Write-Host "$server on port $port is not reachable."
    }
}

# Test both servers
Test-Port -server $server1 -port $port
Test-Port -server $server2 -port $port

Решение 3. Исправление ошибки SQL Server 1418 (конфигурация брандмауэра)

Этот подход использует командную строку Windows для проверки конфигураций брандмауэра, гарантируя, что необходимые порты (1433, 5022) открыты на обоих серверах.

-- Check if SQL Server and mirroring ports are open
netsh advfirewall firewall add rule name="SQLPort" dir=in action=allow protocol=TCP localport=1433
netsh advfirewall firewall add rule name="MirrorPort" dir=in action=allow protocol=TCP localport=5022

-- Disable firewall temporarily for testing purposes
netsh advfirewall set allprofiles state off

-- Enable firewall again after testing
netsh advfirewall set allprofiles state on

Решение 4. Скрипт Python для проверки TCP-соединения между серверами

В этом решении используется Python для проверки возможности взаимодействия экземпляров SQL Server по сети путем проверки TCP-соединений.

import socket

# Define server IPs and port
server1 = '192.168.0.80'
server2 = '192.168.0.85'
port = 5022

# Function to check connectivity
def check_connection(server, port):
    try:
        sock = socket.create_connection((server, port), timeout=5)
       print(f'Connection successful to {server}:{port}')
        sock.close()
   except socket.error:
       print(f'Cannot connect to {server}:{port}')

# Check both servers
check_connection(server1, port)
check_connection(server2, port)

Решение 5. Конфигурация графического интерфейса SQL Server Management Studio (SSMS)

В этом решении описывается настройка зеркалирования с помощью графического интерфейса SSMS для пользователей, которые предпочитают не использовать интерфейсы командной строки.

1. Open SQL Server Management Studio (SSMS).
2. Right-click your database -> Tasks -> Mirror...
3. Click Configure Security and follow the wizard.
4. Ensure both Principal and Mirror servers are correct.
5. Set the port for the mirroring endpoints to 5022.
6. Complete the configuration and click Start Mirroring.
7. Verify the mirroring status by checking the "Database Properties" window.

Изучение проблем сети и безопасности при зеркалировании SQL Server

При настройке Зеркальное отображение базы данных SQL ServerОднако одним из аспектов, который часто упускают из виду, является роль конфигурации сети и настроек безопасности. Ошибка 1418, указывающая на невозможность доступа к сетевому адресу сервера, часто возникает из-за проблем с основной сетью. Даже если открыты правильные порты (1433 и 5022) и отключены брандмауэры, другие сетевые элементы, такие как маршрутизация и конфигурация DNS, могут вызвать сбои связи. Важно убедиться, что оба сервера правильно разрешают IP-адреса друг друга, особенно в средах с несколькими подсетями.

Другая задача включает в себя Аутентификация SQL-сервера настройки во время настройки зеркалирования. Зеркальное отображение базы данных требует, чтобы как основной, так и зеркальный сервер аутентифицировали друг друга с помощью сертификатов или аутентификации на основе домена (Kerberos). Если эта настройка настроена неправильно или существует несоответствие протоколов безопасности между двумя серверами, может возникнуть ошибка 1418. Кроме того, учетные записи служб SQL Server должны иметь правильные разрешения на обоих компьютерах, в частности, доступ к конечным точкам зеркалирования.

Наконец, выбор операционной системы также может повлиять на поведение зеркалирования. Различные версии Windows могут по-разному обрабатывать TCP-соединения, особенно в том, как они управляют правилами брандмауэра и маршрутизацией сетевого трафика. Если в операционной системе любого сервера установлены устаревшие или несоответствующие сетевые драйверы, связь между серверами может прерваться. Обеспечение актуальности ОС с последними исправлениями и работы соответствующих служб имеет решающее значение для решения проблем с подключением, таких как ошибка 1418.

Общие вопросы по настройке зеркального отображения SQL Server и ошибке 1418

  1. Что вызывает ошибку 1418 при зеркалировании SQL Server?
  2. Ошибка 1418 обычно возникает из-за сбоя связи между двумя серверами. Это может быть связано с настройками брандмауэра, неправильными mirroring endpointsили проблемы с сетевым подключением.
  3. Как я могу проверить, открыты ли мои порты для зеркалирования SQL Server?
  4. Используйте telnet команда или сценарий, например New-Object System.Net.Sockets.TcpClient в PowerShell, чтобы проверить, открыты ли порты 1433 и 5022.
  5. Должны ли оба сервера находиться в одном домене для зеркалирования?
  6. Нет, но аутентификация домена может упростить процесс. В противном случае вам придется использовать аутентификацию на основе сертификатов для защиты mirroring endpoints.
  7. Какова роль конечной точки в зеркальном отображении базы данных?
  8. CREATE ENDPOINT Команда создает сетевой интерфейс, который позволяет экземплярам SQL Server взаимодействовать во время зеркального отображения. Каждый сервер должен иметь функционирующую конечную точку зеркалирования.
  9. Могу ли я зеркалировать базы данных на разных версиях SQL Server?
  10. Нет, для правильной работы зеркального отображения базы данных требуется, чтобы оба экземпляра SQL Server имели одну и ту же версию и выпуск.

Заключительные мысли по устранению ошибки зеркального отображения базы данных 1418

Ошибки зеркального отображения базы данных, такие как ошибка 1418, часто возникают из-за проблем с сетью между серверами. Эту проблему можно решить, если убедиться, что правильные порты открыты, брандмауэры настроены и конечные точки настроены правильно.

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

Ссылки и ресурсы по решениям зеркального отображения баз данных
  1. Подробные сведения о настройке зеркального отображения SQL Server и устранении неполадок, включая ошибку 1418 и настройки конечной точки, можно найти по адресу Документация Microsoft SQL .
  2. Подробное руководство по настройке правил брандмауэра и устранению сетевых неполадок для зеркалирования SQL Server можно найти по адресу Конфигурация брандмауэра Windows .
  3. Сценарии PowerShell для тестирования портов и проверки сети между экземплярами SQL Server доступны по адресу Документация PowerShell .
  4. Информацию о методах программирования сокетов Python, используемых при тестировании подключения к серверу, см. Модуль сокетов Python .