Odpravljanje napake zrcaljenja baze podatkov 1418: Omrežni naslov strežnika ni dosegljiv

Temp mail SuperHeros
Odpravljanje napake zrcaljenja baze podatkov 1418: Omrežni naslov strežnika ni dosegljiv
Odpravljanje napake zrcaljenja baze podatkov 1418: Omrežni naslov strežnika ni dosegljiv

Razumevanje težav s povezavo z zrcaljenjem baze podatkov

Zrcaljenje baze podatkov je bistvena strategija za zagotavljanje visoke razpoložljivosti in redundance v okoljih SQL Server. Vendar lahko konfiguriranje zrcaljenja včasih privede do frustrirajočih napak, kot je napaka 1418, ki navaja, da omrežnega naslova strežnika ni mogoče doseči ali da ne obstaja.

Ta posebna napaka se pogosto pojavi pri poskusu nastavitve seje zrcaljenja med dvema primerkoma strežnika SQL Server, tudi če sta obe bazi podatkov dostopni posamično. Težava se pojavi, ko zrcaljene končne točke ne morejo komunicirati med seboj.

V obravnavanem primeru sta v postopek zrcaljenja vključena lokalno namizje (192.168.0.80) in mini računalnik (192.168.0.85). Mini PC naj bi služil kot replika samo za branje za mobilno aplikacijo z uporabo načina zrcaljenja "High Performance".

Kljub pravilni konfiguraciji vrat in nastavitvam požarnega zidu uporabnik naleti na napako 1418, ko poskuša začeti sejo zrcaljenja. Ta članek bo raziskal možne vzroke in rešitve za odpravo te težave.

Ukaz Primer uporabe
ALTER ENDPOINT Ta ukaz se uporablja za spreminjanje stanja končne točke zrcaljenja baze podatkov v strežniku SQL Server. V kontekstu odpravljanja napake 1418 zagotavlja, da je končna točka pravilno zagnana in posluša na določenih vratih. Primer: ALTER ENDPOINT [Mirroring] STATE = STARTED;
GRANT CONNECT ON ENDPOINT Omogoča določeni prijavi povezavo s končno točko zrcaljenja. To je ključnega pomena za omogočanje varne komunikacije primerkov strežnika SQL med zrcaljenjem baze podatkov. Primer: GRANT CONNECT ON ENDPOINT::[Mirroring_Endpoint] TO [DOMAINUserAccount];
SET PARTNER Konfigurira en primerek SQL Server kot partnerja v seji zrcaljenja baze podatkov. Ta ukaz določi omrežni naslov za partnerski strežnik. Primer: ALTER DATABASE YourDatabaseName SET PARTNER = 'TCP://192.168.0.85:5022';
CREATE ENDPOINT Ustvari končno točko zrcaljenja, ki posluša na določenih vratih in upravlja seje zrcaljenja baze podatkov. Določa komunikacijsko vlogo (npr. PARTNER). Primer: USTVARI KONČNO TOČKO [Mirroring_Endpoint] AS TCP (LISTENER_PORT = 5022) ZA DATABASE_MIRRORING (ROLE = PARTNER);
netsh advfirewall firewall add rule Uporablja se za konfiguracijo pravil požarnega zidu, ki omogočajo promet prek določenih vrat, potrebnih za SQL Server in zrcaljenje (npr. 1433 in 5022). To je bistveno za omogočanje komunikacije med zrcaljenimi partnerji. Primer: netsh advfirewall firewall add rule name="SQLPort" dir=in action=allow protocol=TCP localport=1433
socket.create_connection Ukaz Python, ki se uporablja za vzpostavitev povezave TCP z določenim strežnikom in vrati. V tem kontekstu se uporablja za preverjanje, ali je primerek SQL Server dosegljiv prek omrežja. Primer: socket.create_connection((strežnik, vrata), timeout=5);
New-Object System.Net.Sockets.TcpClient Ukaz PowerShell, ki se uporablja za ustvarjanje odjemalca TCP za testiranje povezljivosti vrat. Pomaga pri preverjanju, ali so potrebna vrata za zrcaljenje odprta in dostopna med strežniki. Primer: $tcpClient = New-Object System.Net.Sockets.TcpClient($server, $port)
SELECT * FROM sys.database_mirroring Ta ukaz SQL pridobi status seje zrcaljenja baze podatkov in pomaga pri diagnosticiranju, ali je nastavitev zrcaljenja pravilno vzpostavljena ali se sooča s težavami. Primer: SELECT * FROM sys.database_mirroring;

Podrobna razčlenitev skriptov za odpravljanje napak pri zrcaljenju

Prvi skript, naveden v prejšnjih primerih, uporablja Transact-SQL (T-SQL) ukaze za konfiguracijo in razrešitev napake zrcaljenja v SQL Server. Najbolj kritičen del skripta je ustvarjanje in konfiguracija zrcaljenje končnih točk. Te končne točke so omrežni vmesniki, prek katerih instance SQL Server komunicirajo med zrcaljenjem. Ukaz SPREMENI KONČNO TOČKO zagotavlja, da sta končni točki na obeh strežnikih v stanju »ZAČETO«, kar omogoča komunikacijo. The POSTAVITE PARTNERJA ukaz se nato uporabi za povezovanje baz podatkov, pri čemer se določi omrežni naslov partnerskega strežnika, ki omogoča, da primerka SQL zrcalita podatke po omrežju.

Drugi skript je rešitev PowerShell, namenjena testiranju omrežne povezave med obema strežnikoma. PowerShell uporablja New-Object System.Net.Sockets.TcpClient ukaz za ustvarjanje odjemalca TCP, ki se poskuša povezati z navedenim naslovom IP in vrati. To je učinkovit način za preverjanje, ali so zahtevana vrata (1433 za SQL Server in 5022 za zrcaljenje) odprta in dostopna. Ta skript je še posebej uporaben za diagnosticiranje težav s požarnim zidom ali omrežjem, ki morda preprečujeta komunikacijo dveh primerkov SQL in tako povzročata Napaka 1418.

Tretji skript uporablja ukaze Windows Command Prompt za upravljanje nastavitev požarnega zidu. Natančneje, netsh advfirewall požarni zid dodajanje pravila ukaz se uporablja za odpiranje potrebnih vrat za SQL Server in zrcaljenje. To zagotavlja, da lahko promet baze podatkov (vrata 1433) in zrcaljeni promet (vrata 5022) prosto tečeta med obema strežnikoma. Z začasnim onemogočanjem požarnega zidu z netsh advfirewall izklopi stanje vseh profilov lahko skript preveri, ali je požarni zid glavni vzrok težave z dostopom do omrežja. Ta rešitev je še posebej pomembna pri odpravljanju težav s komunikacijo strežnika v varnem okolju.

Nazadnje, skript Python uporablja socket.create_connection funkcijo za izvedbo preverjanja omrežja med dvema strežnikoma. Ta skript ponuja hiter in učinkovit način za preverjanje, ali lahko strežniki dosežejo drug drugega prek zahtevanih vrat TCP. Poskuša vzpostaviti povezavo in, če je uspešna, potrdi, da je omrežna nastavitev pravilna. Zaradi preprostosti Pythona pri obravnavanju težav, povezanih z omrežjem, je dobra izbira za preizkušanje povezljivosti, zlasti v okoljih, kjer druga orodja niso na voljo ali jih je težko uporabljati. Ti skripti skupaj ponujajo celovit pristop k reševanju zrcaljenje baze podatkov napako in zagotavljanje nemotene komunikacije med primerki SQL Server.

1. rešitev: Odpravljanje napake 1418 pri zrcaljenju baze podatkov SQL Server (pristop T-SQL)

Ta rešitev uporablja Transact-SQL (T-SQL) za reševanje težav z zrcaljenjem baze podatkov s konfiguriranjem končnih točk, preverjanjem pristnosti povezav in preverjanjem naslovov strežnikov.

-- 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. rešitev: skript PowerShell za preizkus dostopnosti vrat SQL Server

Ta rešitev uporablja lupino PowerShell za preizkušanje povezljivosti vrat med strežniki in zagotavlja, da so zahtevana vrata odprta in poslušajo.

# 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. rešitev: Popravek napake SQL Server 1418 (konfiguracija požarnega zidu)

Ta pristop uporablja ukazni poziv Windows za preverjanje konfiguracij požarnega zidu in zagotavlja, da so zahtevana vrata (1433, 5022) odprta na obeh strežnikih.

-- 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. rešitev: skript Python za preverjanje povezave TCP med strežniki

Ta rešitev uporablja Python za preverjanje, ali primerki strežnika SQL Server lahko komunicirajo prek omrežja s preverjanjem povezav 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. rešitev: Konfiguracija grafičnega vmesnika SQL Server Management Studio (SSMS).

Ta rešitev vodi skozi nastavitev zrcaljenja z uporabo GUI SSMS za uporabnike, ki raje ne uporabljajo vmesnikov ukazne vrstice.

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.

Raziskovanje omrežnih in varnostnih izzivov pri zrcaljenju SQL Server

Pri postavljanju Zrcaljenje baze podatkov SQL Server, je en vidik, ki se pogosto spregleda, vloga omrežne konfiguracije in varnostnih nastavitev. Napaka 1418, ki kaže, da omrežnega naslova strežnika ni mogoče doseči, je pogosto posledica osnovnih težav z omrežjem. Tudi če so odprta pravilna vrata (1433 in 5022) in so požarni zidovi onemogočeni, lahko drugi elementi omrežja, kot sta usmerjanje in konfiguracija DNS, povzročijo napake v komunikaciji. Pomembno je zagotoviti, da oba strežnika pravilno razrešujeta naslove IP drug drugega, zlasti v okoljih z več podomrežji.

Drug izziv vključuje Preverjanje pristnosti strežnika SQL nastavitve med nastavitvijo zrcaljenja. Zrcaljenje baze podatkov zahteva, da se glavni in zrcalni strežnik medsebojno overita prek potrdil ali domenskega preverjanja pristnosti (Kerberos). Če ta nastavitev ni pravilno konfigurirana ali če obstaja neujemanje varnostnih protokolov med obema strežnikoma, lahko pride do napake 1418. Poleg tega morajo imeti računi storitev SQL Server pravilna dovoljenja na obeh napravah, zlasti dostop do končnih točk zrcaljenja.

Končno lahko izbira operacijskega sistema vpliva tudi na obnašanje zrcaljenja. Različne različice sistema Windows lahko različno obravnavajo povezave TCP, zlasti glede tega, kako upravljajo pravila požarnega zidu in usmerjanje omrežnega prometa. Če ima operacijski sistem katerega koli strežnika zastarele ali neusklajene omrežne gonilnike, lahko komunikacija med strežniki ne uspe. Zagotavljanje, da je operacijski sistem posodobljen z najnovejšimi popravki in da se izvajajo ustrezne storitve, je ključnega pomena pri reševanju težav s povezljivostjo, kot je napaka 1418.

Pogosta vprašanja o nastavitvi zrcaljenja SQL Server in napaki 1418

  1. Kaj povzroča napako 1418 pri zrcaljenju SQL Server?
  2. Napako 1418 običajno povzroči komunikacijska napaka med dvema strežnikoma. To je lahko posledica nepravilnih nastavitev požarnega zidu mirroring endpoints, ali težave z omrežno povezljivostjo.
  3. Kako lahko preverim, ali so moja vrata odprta za zrcaljenje SQL Server?
  4. Uporabite telnet ukaz ali skript, kot npr New-Object System.Net.Sockets.TcpClient v PowerShell, da preizkusite, ali so vrata 1433 in 5022 odprta.
  5. Ali morata biti oba strežnika za zrcaljenje v isti domeni?
  6. Ne, vendar lahko preverjanje pristnosti domene poenostavi postopek. V nasprotnem primeru morate za zaščito uporabiti avtentikacijo na podlagi potrdila mirroring endpoints.
  7. Kakšna je vloga končne točke pri zrcaljenju baze podatkov?
  8. The CREATE ENDPOINT ustvari omrežni vmesnik, ki omogoča komunikacijo primerkov SQL Server med zrcaljenjem. Vsak strežnik mora imeti delujočo zrcaljeno končno točko.
  9. Ali lahko zrcalim zbirke podatkov v različnih različicah SQL Server?
  10. Ne, zrcaljenje baze podatkov zahteva, da sta oba primerka SQL Server v isti različici in izdaji, da pravilno delujeta.

Končne misli o reševanju napake zrcaljenja baze podatkov 1418

Napake zrcaljenja baze podatkov, kot je napaka 1418, so pogosto posledica težav z omrežjem med strežniki. To težavo lahko odpravite tako, da zagotovite, da so odprta pravilna vrata, da so požarni zidovi konfigurirani in da so končne točke pravilno nastavljene.

Poleg tega bo preverjanje dostopa do omrežja z orodji, kot je PowerShell, in zagotavljanje skladnosti protokolov za preverjanje pristnosti med strežniki izboljšalo vaše možnosti za uspeh. Sledenje tem korakom lahko pomaga doseči zanesljivo zrcaljenje SQL Server za visoko zmogljive operacije.

Reference in viri za rešitve za zrcaljenje baz podatkov
  1. Podrobnosti o konfiguraciji zrcaljenja SQL Server in odpravljanju težav, vključno z napako 1418 in nastavitvami končne točke, lahko najdete na Microsoftova dokumentacija SQL .
  2. Do izčrpnega vodnika za konfiguriranje pravil požarnega zidu in odpravljanje težav z omrežjem za zrcaljenje strežnika SQL lahko dostopate na Konfiguracija požarnega zidu Windows .
  3. Skripti PowerShell za testiranje vrat in preverjanje omrežja med primerki SQL Server so na voljo na Dokumentacija PowerShell .
  4. Za tehnike programiranja vtičnic Python, ki se uporabljajo pri testiranju povezljivosti strežnika, obiščite Modul vtičnice Python .