สิ่งที่คุณทำจะขึ้นอยู่กับรุ่นของ SQL Server ของคุณเช่นเดียวกับว่าคุณสามารถที่จะรับบริการ SQL Server เพื่อสร้างข้อมูลประจำตัวใหม่ สองวิธีแรกที่นี่ไม่จำเป็นต้องรีสตาร์ทอินสแตนซ์:
สำหรับอินสแตนซ์ SQL Server 2005, 2008 และ 2008 R2
คุณสามารถเชื่อมต่อโดยใช้NT AUTHORITY\SYSTEM
บัญชี (หรือวิธีการลับๆอื่น ๆ ) มีรายละเอียดบางอย่างในคำตอบบางส่วนที่นี่:
ฉันยังมีเคล็ดลับบนMSSQLTips.comที่แก้ไขปัญหานี้:
โดยพื้นฐานแล้วคุณดาวน์โหลดPSExecจาก Microsoft จากนั้นใช้เพื่อเรียกใช้ Management Studio เมื่อคุณติดตั้งแล้ว:
PsExec -s -i "C:\...\Ssms.exe"
สิ่งนี้จะเชื่อมต่อเป็นNT AUTHORITY\SYSTEM
และจะอนุญาตให้คุณทำสิ่งต่างๆใน Object Explorer เช่น:
เปลี่ยนอินสแตนซ์เป็นโหมดการพิสูจน์ตัวจริงของ SQL Server และ Windows - คลิกขวาที่ชื่อเซิร์ฟเวอร์, คุณสมบัติการเข้าชมและเปลี่ยนปุ่มตัวเลือกหากตั้งค่าเป็น Windows เท่านั้นในปัจจุบัน:
ตั้งรหัสผ่านสำหรับsa
บัญชี - ขยายความปลอดภัยขยายการเข้าสู่ระบบคลิกขวาsa
และกดคุณสมบัติและในกล่องโต้ตอบผลลัพธ์จะมีช่องป้อนรหัสผ่านสองช่อง:
เพิ่มการเข้าสู่ระบบของคุณเองเป็นsysadmin
- คลิกขวาเข้าสู่ระบบเข้าสู่ระบบใหม่ ... ป้อนชื่อเข้าสู่ระบบของคุณ (ในรูปแบบDOMAIN\username
) จากนั้นย้ายไปที่แท็บบทบาทเซิร์ฟเวอร์แล้วทำsysadmin
เครื่องหมายในช่องและคลิกตกลง:
(หรือหากการเข้าสู่ระบบของคุณอยู่ในรายการคลิกขวาคุณสมบัติและตรวจสอบให้แน่ใจว่าได้ทำsysadmin
เครื่องหมายภายใต้บทบาทเซิร์ฟเวอร์)
สำหรับ SQL Server 2012 และอินสแตนซ์ที่ใหม่กว่า
เริ่มต้นด้วย SQL Server 2012 NT Authority\SYSTEM
ไม่ได้รับสิทธิ์ให้กับ SQL Server อีกต่อไปตามค่าเริ่มต้น ดังนั้นวิธีการทำเช่นนั้นในเวอร์ชั่นใหม่เหล่านี้ได้รับรายละเอียดโดย Argenis Fernandez :
- หากบริการ SQL VSS Writer ทำงานอยู่ให้หยุดและหยุดแผนการบำรุงรักษาทั้งหมดหรือซอฟต์แวร์สำรองข้อมูลของบุคคลที่สามที่อาจใช้งานได้
เปิดregedit.exe
และเปลี่ยนค่าของการHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SQLWriter\ImagePath
ที่จะชี้ไปซึ่งเป็นไปได้ในSQLCMD.exe
C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\**<...110|120|130|140...>**\Tools\Binn
หลังจากแก้ไขค่ารีจิสทรีควรมีลักษณะดังนี้ (ขออภัยสำหรับการเลื่อน):
"C:Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.exe" -S .\instancename -E -Q "ALTER ROLE sysadmin ADD MEMBER [YourDomain\YourUserName];"
ลองเริ่มบริการ SQL VSS Writer อีกครั้ง (คุณจะได้รับข้อผิดพลาดไม่เป็นไร)
ตอนนี้คุณควรจะสามารถเชื่อมต่อเป็นใช้sysadmin
YourDomain\YourUserName
ดังนั้นหยุดบริการ SQL VSS Writer แก้ไขรีจิสตรีและรีสตาร์ทเซอร์วิส (หากคุณต้องการให้รันอยู่หรือรันก่อนที่จะเริ่มต้น)
ฉันได้ผ่านสิ่งนี้ไปแล้วในรายละเอียดที่มากขึ้นในเคล็ดลับที่สอง:
แม้ว่าเมื่อฉันเขียนคำแนะนำนั้นฉันใช้วิธีที่ยุ่งยากกว่าในการทำสำเนาSQLCMD.exe
และแทนที่sqlwriter.exe
- ง่ายกว่ามากเพียงแค่ชี้บริการที่SQLCMD.exe
โดยตรง
หากคุณสามารถที่จะนำบริการ SQL Server ไปใช้ได้
มีเส้นทางที่ได้รับการสนับสนุนอย่างเป็นทางการจาก Microsoft ที่ต้องเริ่มต้นอินสแตนซ์ใหม่ในโหมดผู้ใช้รายเดียว:
นอกจากนี้ยังมีฟังก์ชั่นในdbatools.ioซึ่งเป็นโซลูชั่น Powershell สำหรับการจัดการ SQL Server ที่เรียกว่าReset-DbaAdmin
:
ความปลอดภัยไม่ใช่ปัญหาหลักที่นี่
ฉันเห็นผู้คนจำนวนมากที่เรียกร้องให้ Microsoft "แก้ไข" สิ่งที่เรียกว่า "ช่องโหว่" เหล่านี้ นี่เป็นวิธีการที่ถูกต้องในการกู้คืนการเข้าถึงอินสแตนซ์ของ SQL Server ที่คุณเป็นเจ้าของโดยชอบธรรม พวกเขาทุกคนต้องการสิทธิ์ที่ยกระดับบนโฮสต์ฟิสิคัลที่มี SQL Server อยู่ อย่างที่ฉันพูดกับหลาย ๆ คนถ้าคุณไม่ต้องการให้นักพัฒนาทำกับการติดตั้ง SQL Server อย่าทำให้พวกเขาเป็นผู้ดูแลระบบ