Ich bin dabei, eine TEST-Umgebung für unsere SQL Server-Entwicklungsmitarbeiter zu erstellen.
In der Produktion haben wir 3 SQL Server, SQL01
enthält mehrere Datenbanken, auf die gespiegelt wird SQL02
. SQL03
fungiert als Zeuge in einer "hohen Sicherheit mit automatischem Failover" oder einer synchronen Konfiguration.
Ich habe VMWare P2V verwendet, um alle drei Maschinen auf separate Hardware zu virtualisieren, die SIDs der Maschinen neu zu konfigurieren und die IP-Adressen unserer Produktionsserver von diesen neuen Maschinen aus zu beschädigen.
Ich hatte anfangs vergessen, die Produktionszeugenmaschine zu lochen, daher verwendeten die Datenbanken auf den TEST-Maschinen die SQL03
Maschine immer noch als Zeugen. Als ich das Problem bemerkte, entschied ich mich, die Datenbanken in TEST neu zu konfigurieren, um auf den neu virtualisierten TEST-Zeugen zu verweisen TEST03
.
Um die Datenbank für die Verwendung des neuen Zeugen neu zu konfigurieren, habe ich auf dem Primärserver den folgenden Befehl eingegeben TEST01
:
ALTER DATABASE [TestDB] SET WITNESS = 'TCP://TEST03.domain.inet:5022';
Die Antwort war unerwartet:
The ALTER DATABASE command could not be sent to the remote server instance
'TCP://TEST03.domain.inet:5022'. The database mirroring configuration was
not changed. Verify that the server is connected, and try again.
Ich war sehr ratlos über diese Fehlermeldung, da die Konfiguration auf den Produktionsmaschinen funktioniert und auf den Testmaschinen in keiner Weise geändert wurde.
Um dies zum Laufen zu bringen, musste ich einen Testzeugen erstellen LOGIN
:
CREATE LOGIN [DOMAIN\SQLServiceAccount] FOR WINDOWS WITH DEFAULT_DATABASE [Master];
und GRANT
es CONNECT
Rechte auf dem fraglichen Endpunkt:
GRANT CONNECT ON ENDPOINT::Mirroring TO [DOMAIN\SQLServiceAccount];
Ich konnte dann die gespiegelten Datenbanken in der TEST-Umgebung erfolgreich auf den neuen Testzeugen verweisen.
Wie kann ich den Endpunkt des Produktionszeugen überprüfen, um festzustellen, welche Sicherheit damit verbunden ist?
Ich gehe davon aus, dass es einen Systemkatalog geben muss, den ich einsehen kann, aber Books-on-Line scheint nichts Spezifisches für Endpunkte zu haben, und Bing ist gut, Bingless ...
Zusätzliche Information:
SELECT ep.endpoint_id, p.class_desc, p.permission_name, ep.name, sp.name
FROM sys.server_permissions p
INNER JOIN sys.endpoints ep ON p.major_id = ep.endpoint_id
INNER JOIN sys.server_principals sp ON p.grantee_principal_id = sp.principal_id
WHERE class = '105';
kehrt zurück:
endpoint_id class_desc permission_name endpoint_name principal_name
2 ENDPOINT CONNECT TSQL Local Machine public
3 ENDPOINT CONNECT TSQL Named Pipes public
4 ENDPOINT CONNECT TSQL Default TCP public
5 ENDPOINT CONNECT TSQL Default VIA public
Und:
SELECT name, endpoint_id, protocol_desc, type_desc, role_desc
FROM sys.database_mirroring_endpoints;
Kehrt zurück:
name endpoint_id protocol_desc type_desc role_desc
Mirroring 65536 TCP DATABASE_MIRRORING WITNESS
Es scheint keinen Eintrag sys.server_permissions
für das Spiegelungsendpunktobjekt zu geben. Nein major_id
und keine minor_id
Übereinstimmungen 65536. Außerdem enthält keine der Systemdatenbanken einen Verweis auf den Endpunkt.
Ich bin ratlos.