Επίλυση σφάλματος κατοπτρισμού βάσης δεδομένων 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 Δημιουργεί ένα τελικό σημείο κατοπτρισμού που ακούει σε μια συγκεκριμένη θύρα και διαχειρίζεται τις περιόδους λειτουργίας κατοπτρισμού βάσης δεδομένων. Καθορίζει τον ρόλο επικοινωνίας (π.χ. ΣΥΝΕΡΓΑΤΗΣ). Παράδειγμα: ΔΗΜΙΟΥΡΓΙΑ 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 protocol=TCP localport=1433
socket.create_connection Μια εντολή Python που χρησιμοποιείται για τη δημιουργία μιας σύνδεσης TCP σε έναν καθορισμένο διακομιστή και θύρα. Σε αυτό το πλαίσιο, χρησιμοποιείται για να ελεγχθεί εάν η παρουσία του SQL Server είναι προσβάσιμη μέσω του δικτύου. Παράδειγμα: socket.create_connection((server, port), timeout=5);
New-Object System.Net.Sockets.TcpClient Μια εντολή PowerShell που χρησιμοποιείται για τη δημιουργία ενός προγράμματος-πελάτη TCP για τον έλεγχο της συνδεσιμότητας θύρας. Βοηθά στην επαλήθευση εάν οι απαραίτητες θύρες mirroring είναι ανοιχτές και προσβάσιμες μεταξύ των διακομιστών. Παράδειγμα: $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 επικοινωνούν κατά τη διάρκεια του κατοπτρισμού. Η εντολή ΑΛΛΑΞΤΕ ΤΕΛΙΚΟ ΣΗΜΕΙΟ διασφαλίζει ότι τα τελικά σημεία και στους δύο διακομιστές βρίσκονται στην κατάσταση "ΕΝΑΡΞΗ", επιτρέποντας την επικοινωνία. Ο SET PARTNER Στη συνέχεια, η εντολή χρησιμοποιείται για τη σύνδεση των βάσεων δεδομένων, καθορίζοντας τη διεύθυνση δικτύου του διακομιστή συνεργάτη, ο οποίος επιτρέπει στις δύο παρουσίες SQL να αντικατοπτρίζουν δεδομένα σε όλο το δίκτυο.

Το δεύτερο σενάριο είναι μια λύση PowerShell που έχει σχεδιαστεί για να δοκιμάσει τη συνδεσιμότητα δικτύου μεταξύ των δύο διακομιστών. Το PowerShell χρησιμοποιεί το New-Object System.Net.Sockets.TcpClient εντολή για τη δημιουργία ενός προγράμματος-πελάτη TCP που επιχειρεί να συνδεθεί στην καθορισμένη διεύθυνση IP και θύρα. Αυτός είναι ένας αποτελεσματικός τρόπος για να επαληθεύσετε ότι οι απαιτούμενες θύρες (1433 για SQL Server και 5022 για κατοπτρισμό) είναι ανοιχτές και προσβάσιμες. Αυτό το σενάριο είναι ιδιαίτερα χρήσιμο για τη διάγνωση ζητημάτων τείχους προστασίας ή δικτύου που ενδέχεται να εμποδίζουν την επικοινωνία των δύο παρουσιών SQL, προκαλώντας έτσι την Σφάλμα 1418.

Το τρίτο σενάριο αξιοποιεί τις εντολές της γραμμής εντολών των Windows για τη διαχείριση των ρυθμίσεων του τείχους προστασίας. Συγκεκριμένα, το κανόνας προσθήκης τείχους προστασίας netsh advfirewall Η εντολή χρησιμοποιείται για το άνοιγμα των απαραίτητων θυρών για SQL Server και mirroring. Αυτό διασφαλίζει ότι τόσο η κίνηση της βάσης δεδομένων (θύρα 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

Αυτή η λύση χρησιμοποιεί το 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).

Αυτή η λύση ακολουθεί τη ρύθμιση του κατοπτρισμού χρησιμοποιώντας το GUI 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 Server ρυθμίσεις κατά τη ρύθμιση του κατοπτρισμού. Ο κατοπτρισμός βάσης δεδομένων απαιτεί τόσο ο κύριος όσο και ο διακομιστής κατοπτρισμού να ελέγχουν ο ένας τον άλλον μέσω πιστοποιητικών ή ελέγχου ταυτότητας βάσει τομέα (Kerberos). Εάν αυτή η ρύθμιση δεν έχει ρυθμιστεί σωστά ή εάν υπάρχει αναντιστοιχία στα πρωτόκολλα ασφαλείας μεταξύ των δύο διακομιστών, μπορεί να προκύψει Σφάλμα 1418. Επιπλέον, οι λογαριασμοί υπηρεσιών SQL Server πρέπει να έχουν τα σωστά δικαιώματα και στα δύο μηχανήματα, ιδίως πρόσβαση στα τελικά σημεία κατοπτρισμού.

Τέλος, η επιλογή του λειτουργικού συστήματος μπορεί επίσης να επηρεάσει τον τρόπο συμπεριφοράς του mirroring. Οι διαφορετικές εκδόσεις των Windows μπορεί να χειρίζονται τις συνδέσεις TCP με διαφορετικό τρόπο, ιδιαίτερα στον τρόπο διαχείρισης των κανόνων του τείχους προστασίας και της δρομολόγησης της κυκλοφορίας δικτύου. Εάν το λειτουργικό σύστημα οποιουδήποτε διακομιστή έχει παλιά ή αταίριαστα προγράμματα οδήγησης δικτύου, η επικοινωνία μεταξύ των διακομιστών μπορεί να αποτύχει. Η διασφάλιση ότι το λειτουργικό σύστημα είναι ενημερωμένο με τις πιο πρόσφατες ενημερώσεις κώδικα και ότι εκτελούνται οι κατάλληλες υπηρεσίες είναι ζωτικής σημασίας για την επίλυση προβλημάτων συνδεσιμότητας όπως το Σφάλμα 1418.

Συνήθεις ερωτήσεις σχετικά με το SQL Server Mirroring Setup and Error 1418

  1. Τι προκαλεί το Σφάλμα 1418 στον κατοπτρισμό του SQL Server;
  2. Το σφάλμα 1418 συνήθως προκαλείται από μια αποτυχία επικοινωνίας μεταξύ των δύο διακομιστών. Αυτό μπορεί να οφείλεται σε λανθασμένες ρυθμίσεις τείχους προστασίας mirroring endpoints, ή ζητήματα συνδεσιμότητας δικτύου.
  3. Πώς μπορώ να ελέγξω εάν οι θύρες μου είναι ανοιχτές για κατοπτρισμό του SQL Server;
  4. Χρησιμοποιήστε το telnet εντολή ή ένα σενάριο όπως New-Object System.Net.Sockets.TcpClient στο PowerShell για να ελέγξετε εάν οι θύρες 1433 και 5022 είναι ανοιχτές.
  5. Πρέπει και οι δύο διακομιστές να βρίσκονται στον ίδιο τομέα για mirroring;
  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 Socket Module .