Windows SID ที่เปลี่ยนไปส่งผลกระทบต่อ SQL Server อย่างไร


11

ผู้ดูแลระบบ Windows ของเราระบุปัญหาเกี่ยวกับวิธีที่พวกเขาโคลนเซิร์ฟเวอร์ Windows เห็นได้ชัดว่าเซิร์ฟเวอร์โคลนบางตัวจบลงด้วย SID เดียวกันที่ระดับระบบปฏิบัติการ ฉันได้ยินว่า Microsoft ไม่สนับสนุนเซิร์ฟเวอร์ที่มี SID ซ้ำกัน ดังนั้น SIDs บนเซิร์ฟเวอร์เหล่านี้จำเป็นต้องเปลี่ยน

ฉันอยากรู้ว่ามันมีผลกับ SQL Server อย่างไร ความคิดใด ๆ มันมีผลกับเซิร์ฟเวอร์ฐานข้อมูลแบบคลัสเตอร์อย่างไร?


มีเหตุผลมากมายที่จะไม่เลียนแบบหน้าต่าง แต่ SID ไม่ใช่หนึ่งในนั้น
Jim B

คำตอบ:


9

ปล่อย SID เพียงอย่างเดียว NewSID ได้ถูกยกเลิกเนื่องจาก Mark Russinovich ได้ขุดบางส่วนและพบว่าทั้ง "SIDs ซ้ำกัน == bad!" บรรทัดที่เราทุกคนเคยตีกลองเข้าไปในหัวกะโหลกของเราในช่วงสิบปีที่ผ่านมานั้นเป็นเรื่องไร้สาระ

รายการบล็อกล่าสุดดูมาร์ค: เครื่องทำ SID ตำนาน


6

ฉันจะแนะนำอย่างแน่นอนกับการเปลี่ยน SID จนกระทั่งหลังจากที่คุณอ่าน: การเปลี่ยนเครื่อง SID ด้วย NewSID ตัวแบ่ง SQL Server (และวิธีการแก้ไข)

เห็นได้ชัดว่าเซิร์ฟเวอร์โคลนบางตัวจบลงด้วย SID เดียวกันที่ระดับระบบปฏิบัติการ

ฉันจะเสี่ยงที่จะเดาว่าระบบโคลนทั้งหมดของคุณมี SID เดียวกัน GhostWalk สามารถสร้าง SID ให้คุณใหม่ได้ การใช้ sysprep บนรูปภาพโคลนเริ่มต้นของคุณสามารถช่วยคุณประหยัดในอนาคตของระบบเช่นกัน

หากคุณติดตั้ง SQL Server ห้ามเปลี่ยน SID สิ่งเลวร้ายจะเกิดขึ้น


+1 สำหรับ SysPrep ซึ่งเป็น AFAIK โซลูชันที่รองรับสำหรับสถานการณ์ดังกล่าว
Michael Stum

1
-1 สำหรับการไม่กล่าวถึงว่าการเปลี่ยนแปลง sid ใด ๆ ไม่ได้รับการสนับสนุนรวมถึง sysprep หากมีการติดตั้ง sql
Jim B

หากเซิร์ฟเวอร์ทำงานอยู่ & ติดตั้งสิ่งต่าง ๆ ฉันจะบอกว่าเซิร์ฟเวอร์ของคุณสวยมาก คุณควรจะเปลี่ยน SID ทันทีที่คุณโคลนเซิร์ฟเวอร์ ฉันประหลาดใจที่คุณสามารถเข้าร่วมสองเซิร์ฟเวอร์ด้วย SID เดียวกันกับโดเมน!
Nick Kavadias

2

คุณสามารถใช้ sysinternals NewSID: http://technet.microsoft.com/en-us/sysinternals/bb897418.aspx

เปลี่ยนชื่อคอมพิวเตอร์ใน SQL:

use master
sp_dropserver '<old computer name>'
GO
sp_addserver '<new computer name>', local
GO

sp_helpserver -- will show you the new computer name

จากนั้นเริ่มบริการเซิร์ฟเวอร์ sql


ขอบคุณสำหรับการชี้ให้เห็นการเปลี่ยนชื่อด้วยตนเองของเซิร์ฟเวอร์ sql มันมักจะลืมในโคลน SQL (ผมโคลนเหมืองกับ Sysprep)
ชัน

2

หากฐานข้อมูลของคุณทำธุรกรรมระยะไกลโดยใช้ Microsoft Coordined Transaction Coordinator โปรดทราบว่าเครื่องที่ลอกแบบมานั้นมี MSDTC ID เดียวกันซึ่งไม่ใช่ SID และไม่ได้เปลี่ยนโดย NewSID

คุณจะเห็นสิ่งนี้ใน Event Viewer:

MS DTC ในพื้นที่ตรวจพบว่า MS DTC บนเซิร์ฟเวอร์มีเอกลักษณ์เฉพาะเช่นเดียวกับ MS DTC ในท้องถิ่น ซึ่งหมายความว่า MS DTC สองตัวจะไม่สามารถสื่อสารกันได้ โดยทั่วไปปัญหานี้จะเกิดขึ้นหากระบบใดระบบหนึ่งถูกโคลนโดยใช้เครื่องมือการโคลนที่ไม่รองรับ MS DTC ต้องการให้ระบบโคลนโดยใช้เครื่องมือโคลนที่รองรับเช่น SYSPREP การเรียกใช้ 'msdtc -uninstall' และ 'msdtc -install' จากพรอมต์คำสั่งจะแก้ไขปัญหาได้ หมายเหตุ: การเรียกใช้ 'msdtc -uninstall' จะส่งผลให้ระบบสูญเสียข้อมูลการกำหนดค่า MS DTC ทั้งหมด

ฉันแก้ไขมันอย่างนั้น:

msdtc -uninstall

รอสองสามนาทีแล้ว

msdtc -install
sc config msdtc start= auto
sc start msdtc

1
ด้วยเหตุผลแปลก ๆ บางอย่าง "sc config" ต้องมีช่องว่างระหว่าง "start =" และ "auto" นั่นคือ "sc config msdtc start = auto"
ThatGraemeGuy

ขอบคุณ - ฉันมีพื้นที่ว่ามี แต่แก้ไขมันออกมาเมื่อผมโพสต์คิดว่ามันเป็นคำสะกดผิด :)
CRB

2

ใช้เครื่องมือNewSIDหรือ sysprep ที่Microsoft เป็นเจ้าของอยู่ในปัจจุบันซึ่งเป็นเหมือนการติดตั้ง windows ใหม่โดยไม่ต้องคัดลอกไฟล์ทั้งหมด

ฉันไม่คิดว่าคุณสามารถเข้าร่วมคอมพิวเตอร์สองเครื่องในโดเมนเดียวกันด้วย SID เดียวกันได้ดังนั้นฉันจึงบอกว่าเซิร์ฟเวอร์ SQL ที่ทำคลัสเตอร์จะไม่มีโอกาสเนื่องจากเซิร์ฟเวอร์ต้องอยู่ในโดเมน


1

วิธีเดียวที่สนับสนุนการโคลนระบบคือ sysprep มีหลายเหตุผลที่ทำไมไม่โคลนเซิร์ฟเวอร์ sql:

- Microsoft CSS ไม่รองรับ

- SQL จะทำงานไม่ถูกต้องจนกว่าจะมีการ "เปลี่ยนชื่อ"

- หากคุณมีบริการรายงานก็จะถูกปิดเช่นกัน

- บัญชีระบบและบริการเครือข่ายจะได้รับ SID และรหัสผ่านใหม่ดังนั้นหากคุณใช้สิ่งเหล่านี้เป็นบัญชีบริการจะมีความเจ็บปวด

- SQL Server สร้างกลุ่มโลคัลที่ดีพร้อมรูปแบบ SQLServer2005MSSQLUser $$ MSSQLSERVER ไม่รองรับการเปลี่ยนชื่อเหล่านี้

เพื่อแก้ไขสถานการณ์ที่ฉันจะ -

แบ่งคลัสเตอร์สร้างระบบใหม่ติดตั้ง SQL สร้างคลัสเตอร์ใหม่เรียกใช้การสำรองข้อมูลบนเซิร์ฟเวอร์ที่ไม่ได้ถูกสร้างขึ้นมาใหม่ - จากนั้นหยุดการทำงานเรียกคืนการสำรองข้อมูลนั้นไปยังคลัสเตอร์ใหม่ชี้แอปพลิเคชันไปยังคลัสเตอร์ใหม่ เซิร์ฟเวอร์และเพิ่มลงในคลัสเตอร์ใหม่

- หรืออีกวิธีหนึ่ง (อาจจะง่ายกว่า) ทำไมไม่สร้างเซิร์ฟเวอร์ใหม่ด้วยชื่อใหม่ (ซึ่งจะช่วยแก้ปัญหาที่อาจเกิดขึ้นกับ SID ทุกประเภท) จากนั้นแบ่งคลัสเตอร์ติดตั้ง SQL เข้าร่วมกับคลัสเตอร์เข้าแทนที่กล่องนั้นซ้ำกระบวนการ ไม่มีวิธีหยุดทำงานและไม่จำเป็นต้องสำรอง / กู้คืน (แม้ว่าฉันจะแนะนำให้คุณทำก็ตาม) เราใช้ zznode1, zznode2 และชื่อคลัสเตอร์ที่สร้าง zznode3 และการรวมเข้ากับคลัสเตอร์นั้นเป็นเรื่องง่ายเนื่องจากโหนดไม่ได้อ้างอิงเมื่ออยู่ในคลัสเตอร์ หวังว่าจะช่วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.