Усунення помилки дзеркального відображення бази даних 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 [Mirroring] 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 firewall add rule name="SQLPort" dir=in action=allow protocol=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;

Детальна розбивка сценаріїв усунення помилок віддзеркалення

Перший сценарій, наданий у попередніх прикладах, використовує Transact-SQL (T-SQL) команди для налаштування та вирішення помилки дзеркального відображення в SQL Server. Найважливішою частиною сценарію є створення та налаштування дзеркальне відображення кінцевих точок. Ці кінцеві точки є мережевими інтерфейсами, через які екземпляри SQL Server обмінюються даними під час дзеркального відображення. Команда ЗМІНИТИ КІНЦЕВУ ТОЧКУ гарантує, що кінцеві точки на обох серверах перебувають у стані «ЗАПУЩЕНО», що дозволяє здійснювати зв’язок. The ВСТАНОВИТИ ПАРТНЕРА Потім команда використовується для зв’язування баз даних із зазначенням мережевої адреси партнерського сервера, що дозволяє двом примірникам 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 використовує socket.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: Конфігурація GUI 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 Mirroring

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

Інший виклик передбачає Аутентифікація SQL Server налаштування під час налаштування дзеркалювання. Дзеркальне відображення бази даних вимагає, щоб основний і дзеркальний сервер автентифікували один одного за допомогою сертифікатів або автентифікації на основі домену (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. The 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 .