ฉันอยู่ในกระบวนการสร้างสภาพแวดล้อมการทดสอบสำหรับพนักงานพัฒนาเซิร์ฟเวอร์ SQL ของเรา
ในการผลิตเรามี SQL Server 3 ตัวSQL01
มีฐานข้อมูลหลายตัวที่ทำมิเรอSQL02
ร์ SQL03
ทำหน้าที่เป็นพยานใน "ความปลอดภัยสูงพร้อมการล้มเหลวอัตโนมัติ" หรือการกำหนดค่าแบบซิงโครนัส
ฉันใช้ VMWare P2V เพื่อทำเวอร์ชวลไลเซชันทั้งสามเครื่องบนฮาร์ดแวร์แยกต่างหากกำหนดค่า SID ของเครื่องอีกครั้งและทำการซ่อนที่อยู่ IP ของเซิร์ฟเวอร์การผลิตของเราจากเครื่องใหม่เหล่านี้
ตอนแรกฉันลืมที่จะ blackhole เครื่องจักรพยานการผลิตดังนั้นฐานข้อมูลในเครื่องทดสอบยังคงใช้SQL03
เครื่องเป็นพยาน TEST03
สังเกตเห็นปัญหาที่ฉันตัดสินใจที่จะกำหนดค่าฐานข้อมูลในการทดสอบที่จะชี้ไปที่พยานทดสอบเสมือนจริงขึ้นใหม่เรียกว่า
ในการกำหนดค่าฐานข้อมูลใหม่เพื่อใช้พยานคนใหม่ฉันได้ป้อนคำสั่งต่อไปนี้บนเซิร์ฟเวอร์หลักTEST01
:
ALTER DATABASE [TestDB] SET WITNESS = 'TCP://TEST03.domain.inet:5022';
การตอบสนองที่ไม่คาดคิด:
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.
ฉันสับสนมากที่ข้อความแสดงข้อผิดพลาดนี้เนื่องจากการกำหนดค่าทำงานบนเครื่องที่ใช้งานจริงและยังไม่ได้รับการแก้ไข แต่อย่างใดในเครื่องทดสอบ
เพื่อให้ได้งานนี้ฉันต้องสร้างLOGIN
พยานทดสอบ:
CREATE LOGIN [DOMAIN\SQLServiceAccount] FOR WINDOWS WITH DEFAULT_DATABASE [Master];
และGRANT
มันCONNECT
สิทธิปลายทางในคำถาม:
GRANT CONNECT ON ENDPOINT::Mirroring TO [DOMAIN\SQLServiceAccount];
จากนั้นฉันสามารถชี้ฐานข้อมูลที่มิร์เรอร์บนสภาพแวดล้อมการทดสอบไปยังพยานการทดสอบใหม่ได้สำเร็จ
ฉันจะตรวจสอบจุดสิ้นสุดการเป็นพยานการผลิตเพื่อดูว่าการรักษาความปลอดภัยเกี่ยวข้องกับอะไร?
ฉันคิดว่าต้องมีแคตตาล็อกระบบบางอย่างที่ฉันสามารถตรวจสอบได้ แต่ Books-on-Line ดูเหมือนจะไม่มีอะไรเฉพาะเจาะจงสำหรับ Endpoints และ Bing ก็ดี Bingless ...
ข้อมูลเพิ่มเติม:
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';
ผลตอบแทน:
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
และ:
SELECT name, endpoint_id, protocol_desc, type_desc, role_desc
FROM sys.database_mirroring_endpoints;
ผลตอบแทน:
name endpoint_id protocol_desc type_desc role_desc
Mirroring 65536 TCP DATABASE_MIRRORING WITNESS
ดูเหมือนจะไม่มีรายการsys.server_permissions
สำหรับวัตถุปลายทางของการทำมิเรอร์ ไม่major_id
และไม่minor_id
ตรงกับ 65536 นอกจากนี้ยังไม่มีฐานข้อมูลระบบใด ๆ ที่มีการอ้างอิงถึงปลายทาง
ฉันกำลังสูญเสีย