ฉันจะให้สิทธิ์ผู้ดูแลระบบเข้าถึงอินสแตนซ์ SQL Server ในเครื่องได้อย่างไร


94

ฉันติดตั้ง SQL Server 2008 R2 ลงในเครื่องของฉัน แต่ฉันไม่สามารถสร้างฐานข้อมูลใหม่ได้เนื่องจากสิทธิ์ (หรือขาด)

"สร้างฐานข้อมูลที่ถูกปฏิเสธ"

ดังนั้นฉันจึงพยายามกำหนดสิทธิ์ผู้ดูแลระบบให้กับการเข้าสู่ระบบปัจจุบันของฉัน

"ผู้ใช้ไม่ได้รับอนุญาตให้ดำเนินการนี้"

ฉันยังพยายามสร้างการเข้าสู่ระบบใหม่ที่จะมีสิทธิ์ระดับผู้ดูแลระบบ แต่ไม่มีโชค ฉันจะให้สิทธิ์ผู้ดูแลระบบด้วยตนเองเพื่อสร้างฐานข้อมูลได้อย่างไร ฉันสามารถติดตั้งใหม่ได้ แต่ฉันไม่ต้องการ


1
คุณกำลังพยายามเชื่อมต่อผ่านการรับรองความถูกต้องของเซิร์ฟเวอร์ SQL หรือการรับรองความถูกต้องของ Windows?
Darren

การรับรองความถูกต้องของ Windows (ดูชื่อเรื่อง) ฉันเชื่อมต่อสำเร็จแล้ว ข้อผิดพลาดมาจากการพยายามดำเนินงานของผู้ดูแลระบบ
SkonJeet

คำตอบ:


70

ใช่ดูเหมือนว่าคุณลืมเพิ่มตัวเองในบทบาท sysadmin เมื่อติดตั้ง SQL Server หากคุณเป็นผู้ดูแลระบบภายในเครื่องของคุณบล็อกโพสต์นี้สามารถช่วยคุณใช้ SQLCMD เพื่อนำบัญชีของคุณเข้าสู่กลุ่มผู้ดูแลระบบเซิร์ฟเวอร์ SQL โดยไม่ต้องติดตั้งใหม่ มันเป็นช่องโหว่ด้านความปลอดภัยเล็กน้อยใน SQL Server ถ้าคุณถามฉัน แต่มันจะช่วยคุณได้ในกรณีนี้


15
ไม่ใช่ช่องโหว่ด้านความปลอดภัยผู้ดูแลระบบภายในจำเป็นต้องมีสิทธิ์ในเซิร์ฟเวอร์ sql ในความเป็นจริงผู้ดูแลระบบภายในจะสามารถเข้าถึงข้อมูลของเซิร์ฟเวอร์ sql ได้โดยการคัดลอกไฟล์ข้อมูลไปยังเครื่องอื่น (แล้วคัดลอกกลับหากจำเป็น) ดังนั้น วิธีเดียวของคุณในการแก้ไขปัญหานี้คือ จำกัด สิทธิ์ระดับผู้ดูแลระบบให้เฉพาะกับผู้ที่สมควรได้รับเท่านั้น ..
yoel halb

นั่นควรจะง่ายกว่าการถอนการติดตั้ง / ติดตั้งใหม่หรือไม่? แทบจะไม่! ในกรณีของฉันเราถูกย้ายไปยังโดเมนอื่น การเข้าสู่ระบบที่มีอยู่ทั้งหมดไร้ค่า
dudeNumber4

8
ลิงก์หมดแล้ว (และไม่สนับสนุนคำตอบแบบลิงก์เท่านั้น) stackoverflow.com/a/9889484/389424มีคำแนะนำเช่นเดียวกับบล็อกโพสต์เดิม
janv8000

82

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

net stop mssqlserver

ตอนนี้ไปที่ไดเร็กทอรีที่ติดตั้งเซิร์ฟเวอร์ SQL ไดเร็กทอรีสามารถเป็นหนึ่งในไดเร็กทอรีเหล่านี้:

C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn

หาไดเร็กทอรี MSSQL ของคุณและCDลงในไดเร็กทอรี:

CD C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn

ตอนนี้รันคำสั่งต่อไปนี้เพื่อเริ่ม SQL Server ในโหมดผู้ใช้คนเดียว ตาม SQLCMDที่ระบุไว้SQLCMDสามารถทำการเชื่อมต่อได้เพียงครั้งเดียว(จากหน้าต่างพรอมต์คำสั่งอื่น)

sqlservr -m"SQLCMD"

ตอนนี้เปิดหน้าต่างพรอมต์คำสั่งอื่นในฐานะผู้ใช้เดียวกับที่เริ่ม SQL Server ในโหมดผู้ใช้คนเดียวด้านบนและในนั้นให้เรียกใช้:

sqlcmd

แล้วกด Enter ตอนนี้คุณสามารถดำเนินการคำสั่ง SQL กับอินสแตนซ์ SQL Server ที่ทำงานในโหมดผู้ใช้คนเดียว:

create login [<<DOMAIN\USERNAME>>] from windows;

-- For older versions of SQL Server:
EXEC sys.sp_addsrvrolemember @loginame = N'<<DOMAIN\USERNAME>>', @rolename = N'sysadmin';

-- For newer versions of SQL Server:
ALTER SERVER ROLE [sysadmin] ADD MEMBER [<<DOMAIN\USERNAME>>];

GO

แหล่ง

ปรับปรุง แล้วอย่าลืมเครื่องหมายอัฒภาคตามหลังALTER SERVER ROLE [sysadmin] ADD MEMBER [<<DOMAIN\USERNAME>>];และอย่าเพิ่มอัฒภาคพิเศษตามหลังมิGOฉะนั้นคำสั่งจะไม่ดำเนินการ


ทราบอย่างรวดเร็วว่า sp_addsrvrolemember ALTER SERVER ROLEได้ถูกแทนที่โดย เช่นALTER SERVER ROLE [sysadmin] ADD MEMBER [domain\username]
Fermin

อย่าลืมเพิ่มGO;ตอนท้าย
NMrt

เนื่องจากตอนนี้พวกเราหลายคนใช้งาน SQL Server โดยไม่มี SSMS ฉันรู้สึกว่านี่เป็นคำตอบที่ดีกว่ามาก
Chaim Eliyah

39

ฉันนำฐานข้อมูล SQL 2012 มาใช้โดยที่ฉันไม่ใช่ sysadmin แต่เป็นผู้ดูแลระบบบนเครื่อง ฉันใช้ SSMS กับ "Run as Administrator" เพิ่มบัญชี NT ของฉันเป็นล็อกอิน SQL และตั้งค่าบทบาทเซิร์ฟเวอร์เป็น sysadmin ไม่มีปัญหา.


14
โซลูชันนี้ใช้ได้ผลสำหรับฉันโดยต้องมีขั้นตอนเพิ่มเติมอีกหนึ่งขั้นตอน: ต้องเริ่มเซิร์ฟเวอร์ sql ในโหมดผู้ใช้คนเดียวโดยเพิ่มแฟล็ก "-m" ซึ่งสามารถทำได้โดยใช้ "SQL Server Configuration Manager" คลิกขวาที่อินสแตนซ์เซิร์ฟเวอร์และเลือกคุณสมบัติไปที่แท็บ "Startup Parameters" และเพิ่ม -m
แมท

นี่มันเจ๋งมาก. ง่ายกว่าคำตอบอื่น ๆ มาก
McKay

1
คำตอบที่เร็วที่สุดและดีที่สุดแน่นอน
จอห์นนี่

ค่อนข้างตรงไปตรงมาและทำงานได้อย่างมีเสน่ห์ ขอบคุณ Vince และ maets
Edgar Froes

1
นี่เป็นคำตอบที่ถูกต้อง หมายเหตุหนึ่งในการรับ SQL ในโหมดผู้ใช้คนเดียวฉันต้องเรียกใช้> net stop MSSQL $ SQLEXPRESS แล้ว> net start MSSQL $ SQLEXPRESS / m
Ev

29

นี่คือสคริปต์ที่อ้างว่าสามารถแก้ไขได้

รับสิทธิ์ผู้ดูแลระบบสำหรับ SQL Server Express ในเครื่องของคุณด้วยสคริปต์ง่ายๆนี้

ดาวน์โหลดลิงค์ไปยังสคริปต์

คำอธิบาย

สคริปต์คำสั่งนี้ช่วยให้คุณสามารถเพิ่มตัวเองในบทบาท sysadmin ของอินสแตนซ์ SQL Server ภายในเครื่องได้อย่างง่ายดาย คุณต้องเป็นสมาชิกของกลุ่มผู้ดูแลระบบภายในของ Windows หรือมีสิทธิ์เข้าถึงข้อมูลประจำตัวของผู้ใช้ที่เป็น สคริปต์รองรับ SQL Server 2005 และใหม่กว่า

สคริปต์นี้มีประโยชน์มากที่สุดหากคุณเป็นนักพัฒนาที่พยายามใช้ SQL Server 2008 Express ที่ติดตั้งโดยบุคคลอื่น ในสถานการณ์นี้โดยปกติคุณจะไม่มีสิทธิ์ของผู้ดูแลระบบในอินสแตนซ์ SQL Server 2008 Express เนื่องจากโดยค่าเริ่มต้นมีเพียงผู้ที่ติดตั้ง SQL Server 2008 เท่านั้นที่ได้รับสิทธิ์ระดับผู้ดูแล

ผู้ใช้ที่ติดตั้ง SQL Server 2008 Express สามารถใช้ SQL Server Management Studio เพื่อให้สิทธิ์ที่จำเป็นแก่คุณ แต่ถ้าไม่ได้ติดตั้ง SQL Server Management Studio ล่ะ? หรือแย่กว่านั้นถ้าผู้ใช้ที่ติดตั้งไม่สามารถใช้งานได้อีกต่อไป?

สคริปต์นี้แก้ไขปัญหาได้ในไม่กี่คลิก!

หมายเหตุ: คุณจะต้องให้ไฟล์ BAT พร้อมกับ 'Instance Name' (อาจจะเป็น 'MSSQLSERVER' - แต่อาจจะไม่ใช่): คุณสามารถรับค่านี้ได้โดยเรียกใช้สิ่งต่อไปนี้ใน "Microsoft SQL Server Management Console ":

 SELECT @@servicename

จากนั้นคัดลอกผลลัพธ์เพื่อใช้เมื่อไฟล์ BAT พร้อมต์สำหรับ 'ชื่ออินสแตนซ์ SQL'

  @echo off 
    rem 
    rem **************************************************************************** 
    rem 
    rem    Copyright (c) Microsoft Corporation. All rights reserved. 
    rem    This code is licensed under the Microsoft Public License. 
    rem    THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 
    rem    ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 
    rem    IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 
    rem    PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 
    rem 
    rem **************************************************************************** 
    rem 
    rem CMD script to add a user to the SQL Server sysadmin role 
    rem 
    rem Input:  %1 specifies the instance name to be modified. Defaults to SQLEXPRESS. 
    rem         %2 specifies the principal identity to be added (in the form "<domain>\<user>"). 
    rem            If omitted, the script will request elevation and add the current user (pre-elevation) to the sysadmin role. 
    rem            If provided explicitly, the script is assumed to be running elevated already. 
    rem 
    rem Method: 1) restart the SQL service with the '-m' option, which allows a single connection from a box admin 
    rem            (the box admin is temporarily added to the sysadmin role with this start option) 
    rem         2) connect to the SQL instance and add the user to the sysadmin role 
    rem         3) restart the SQL service for normal connections 
    rem 
    rem Output: Messages indicating success/failure. 
    rem         Note that if elevation is done by this script, a new command process window is created: the output of this 
    rem         window is not directly accessible to the caller. 
    rem 
    rem 
    setlocal 
    set sqlresult=N/A 
    if .%1 == . (set /P sqlinstance=Enter SQL instance name, or default to SQLEXPRESS: ) else (set sqlinstance=%1) 
    if .%sqlinstance% == . (set sqlinstance=SQLEXPRESS) 
    if /I %sqlinstance% == MSSQLSERVER (set sqlservice=MSSQLSERVER) else (set sqlservice=MSSQL$%sqlinstance%) 
    if .%2 == . (set sqllogin="%USERDOMAIN%\%USERNAME%") else (set sqllogin=%2) 
    rem remove enclosing quotes 
    for %%i in (%sqllogin%) do set sqllogin=%%~i 
    @echo Adding '%sqllogin%' to the 'sysadmin' role on SQL Server instance '%sqlinstance%'. 
    @echo Verify the '%sqlservice%' service exists ... 
    set srvstate=0 
    for /F "usebackq tokens=1,3" %%i in (`sc query %sqlservice%`) do if .%%i == .STATE set srvstate=%%j 
    if .%srvstate% == .0 goto existerror 
    rem 
    rem elevate if <domain/user> was defaulted 
    rem 
    if NOT .%2 == . goto continue 
    echo new ActiveXObject("Shell.Application").ShellExecute("cmd.exe", "/D /Q /C pushd \""+WScript.Arguments(0)+"\" & \""+WScript.Arguments(1)+"\" %sqlinstance% \""+WScript.Arguments(2)+"\"", "", "runas"); >"%TEMP%\addsysadmin{7FC2CAE2-2E9E-47a0-ADE5-C43582022EA8}.js" 
    call "%TEMP%\addsysadmin{7FC2CAE2-2E9E-47a0-ADE5-C43582022EA8}.js" "%cd%" %0 "%sqllogin%" 
    del "%TEMP%\addsysadmin{7FC2CAE2-2E9E-47a0-ADE5-C43582022EA8}.js" 
    goto :EOF 
    :continue 
    rem 
    rem determine if the SQL service is running 
    rem 
    set srvstarted=0 
    set srvstate=0 
    for /F "usebackq tokens=1,3" %%i in (`sc query %sqlservice%`) do if .%%i == .STATE set srvstate=%%j 
    if .%srvstate% == .0 goto queryerror 
    rem 
    rem if required, stop the SQL service 
    rem 
    if .%srvstate% == .1 goto startm 
    set srvstarted=1 
    @echo Stop the '%sqlservice%' service ... 
    net stop %sqlservice% 
    if errorlevel 1 goto stoperror 
    :startm 
    rem 
    rem start the SQL service with the '-m' option (single admin connection) and wait until its STATE is '4' (STARTED) 
    rem also use trace flags as follows: 
    rem     3659 - log all errors to errorlog 
    rem     4010 - enable shared memory only (lpc:) 
    rem     4022 - do not start autoprocs 
    rem 
    @echo Start the '%sqlservice%' service in maintenance mode ... 
    sc start %sqlservice% -m -T3659 -T4010 -T4022 >nul 
    if errorlevel 1 goto startmerror 
    :checkstate1 
    set srvstate=0 
    for /F "usebackq tokens=1,3" %%i in (`sc query %sqlservice%`) do if .%%i == .STATE set srvstate=%%j 
    if .%srvstate% == .0 goto queryerror 
    if .%srvstate% == .1 goto startmerror 
    if NOT .%srvstate% == .4 goto checkstate1 
    rem 
    rem add the specified user to the sysadmin role 
    rem access tempdb to avoid a misleading shutdown error 
    rem 
    @echo Add '%sqllogin%' to the 'sysadmin' role ... 
    for /F "usebackq tokens=1,3" %%i in (`sqlcmd -S np:\\.\pipe\SQLLocal\%sqlinstance% -E -Q "create table #foo (bar int); declare @rc int; execute @rc = sp_addsrvrolemember '$(sqllogin)', 'sysadmin'; print 'RETURN_CODE : '+CAST(@rc as char)"`) do if .%%i == .RETURN_CODE set sqlresult=%%j 
    rem 
    rem stop the SQL service 
    rem 
    @echo Stop the '%sqlservice%' service ... 
    net stop %sqlservice% 
    if errorlevel 1 goto stoperror 
    if .%srvstarted% == .0 goto exit 
    rem 
    rem start the SQL service for normal connections 
    rem 
    net start %sqlservice% 
    if errorlevel 1 goto starterror 
    goto exit 
    rem 
    rem handle unexpected errors 
    rem 
    :existerror 
    sc query %sqlservice% 
    @echo '%sqlservice%' service is invalid 
    goto exit 
    :queryerror 
    @echo 'sc query %sqlservice%' failed 
    goto exit 
    :stoperror 
    @echo 'net stop %sqlservice%' failed 
    goto exit 
    :startmerror 
    @echo 'sc start %sqlservice% -m' failed 
    goto exit 
    :starterror 
    @echo 'net start %sqlservice%' failed 
    goto exit 
    :exit 
    if .%sqlresult% == .0 (@echo '%sqllogin%' was successfully added to the 'sysadmin' role.) else (@echo '%sqllogin%' was NOT added to the 'sysadmin' role: SQL return code is %sqlresult%.) 
    endlocal 
    pause

2
ทำงานให้ฉัน สิ่งหนึ่งที่ต้องจำไว้คือตรวจสอบให้แน่ใจว่าคุณมีนามสกุล. js ที่แมปไว้Microsoft ® Windows Based Script Hostมิฉะนั้นวูดูนี้จะไม่ทำงาน (ฉันได้แมปกับ notepad.exe)
Phil Cooper

2
ลิงก์ใช้งานไม่ได้ - "คลังภาพถูกยกเลิกแล้ว"
stuartd

3
@stuartd - เพิ่มสคริปต์
Chris Gessler

หากคุณประสบปัญหาในการเพิ่มตัวเองเป็นผู้ดูแลระบบโดยใช้สคริปต์ด้านบน ลองเพิ่มการเข้าสู่ระบบของคุณในฐานข้อมูลแล้วเรียกใช้สคริปต์
ราม

2
มีคนเพิ่มสิ่งนี้ใน GitHub สคริปต์นี้เป็นโปรแกรมรักษาเวลาจริง gist.github.com/wadewegner/1677788
Patrick

6

Microsoft มีบทความเกี่ยวกับปัญหานี้ มันผ่านไปทีละขั้นตอน

https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/connect-to-sql-server-when-system-administrators-are-locked-out

ในระยะสั้นมันเกี่ยวข้องกับการเริ่มต้นอินสแตนซ์ของ sqlserver -mเช่นเดียวกับคำตอบอื่น ๆ ทั้งหมดที่แนะนำ อย่างไรก็ตาม Microsoft ให้คำแนะนำโดยละเอียดเพิ่มเติมเล็กน้อย

จากหน้าเริ่มต้นเริ่มต้น SQL Server Management Studio บนเมนูมุมมองเลือกเซิร์ฟเวอร์ที่ลงทะเบียน (ถ้าเซิร์ฟเวอร์ของคุณยังไม่ได้ลงทะเบียนให้คลิกขวาที่ Local Server Groups ชี้ไปที่ Tasks จากนั้นคลิก Register Local Servers)

ในพื้นที่เซิร์ฟเวอร์ที่ลงทะเบียนคลิกขวาที่เซิร์ฟเวอร์ของคุณจากนั้นคลิกตัวจัดการการตั้งค่าคอนฟิกเซิร์ฟเวอร์ SQL ควรขออนุญาตทำงานในฐานะผู้ดูแลระบบจากนั้นเปิดโปรแกรม Configuration Manager

ปิด Management Studio

ในตัวจัดการการตั้งค่าคอนฟิกเซิร์ฟเวอร์ SQL ในบานหน้าต่างด้านซ้ายเลือกบริการเซิร์ฟเวอร์ SQL ในบานหน้าต่างด้านขวาค้นหาอินสแตนซ์ของ SQL Server (อินสแตนซ์เริ่มต้นของ SQL Server ประกอบด้วย (MSSQLSERVER) หลังชื่อคอมพิวเตอร์อินสแตนซ์ที่มีชื่อปรากฏในตัวพิมพ์ใหญ่ที่มีชื่อเดียวกับที่มีในเซิร์ฟเวอร์ที่ลงทะเบียน) คลิกขวาที่อินสแตนซ์ของ SQL Server แล้วคลิกคุณสมบัติ

บนแท็บ Startup Parameters ในกล่องระบุพารามิเตอร์การเริ่มต้นพิมพ์ -m แล้วคลิกเพิ่ม (นั่นคือเส้นประตามด้วยอักษรตัวพิมพ์เล็ก m)

บันทึก

สำหรับ SQL Server เวอร์ชันก่อนหน้าบางรุ่นจะไม่มีแท็บ Startup Parameters ในกรณีนั้นบนแท็บขั้นสูงคลิกสองครั้งที่พารามิเตอร์การเริ่มต้น พารามิเตอร์จะเปิดขึ้นในหน้าต่างขนาดเล็กมาก ระวังอย่าเปลี่ยนพารามิเตอร์ที่มีอยู่ ในตอนท้ายให้เพิ่มพารามิเตอร์ใหม่ -m แล้วคลิกตกลง (นั่นคือเซมิโคลอนแล้วขีดกลางตามด้วยตัวพิมพ์เล็ก m)

คลิกตกลงและหลังจากข้อความให้รีสตาร์ทให้คลิกขวาที่ชื่อเซิร์ฟเวอร์ของคุณจากนั้นคลิกรีสตาร์ท

หลังจาก SQL Server รีสตาร์ทเซิร์ฟเวอร์ของคุณจะอยู่ในโหมดผู้ใช้คนเดียว ตรวจสอบให้แน่ใจว่าไม่ได้เรียกใช้ SQL Server Agent หากเริ่มต้นระบบจะใช้การเชื่อมต่อเดียวของคุณ

บนหน้าจอเริ่มต้นของ Windows 8 ให้คลิกขวาที่ไอคอนสำหรับ Management Studio ที่ด้านล่างของหน้าจอให้เลือก Run as administrator (สิ่งนี้จะส่งต่อข้อมูลรับรองผู้ดูแลระบบของคุณไปยัง SSMS)

บันทึก

สำหรับ Windows เวอร์ชันก่อนหน้าตัวเลือก Run as administrator จะปรากฏเป็นเมนูย่อย

ในการกำหนดค่าบางอย่าง SSMS จะพยายามทำการเชื่อมต่อหลาย ๆ การเชื่อมต่อหลายครั้งจะล้มเหลวเนื่องจาก SQL Server อยู่ในโหมดผู้ใช้คนเดียว คุณสามารถเลือกหนึ่งในการดำเนินการต่อไปนี้เพื่อดำเนินการ ดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้

a) เชื่อมต่อกับ Object Explorer โดยใช้ Windows Authentication (ซึ่งรวมถึงข้อมูลประจำตัวของผู้ดูแลระบบของคุณ) ขยายความปลอดภัยขยายการเข้าสู่ระบบและคลิกสองครั้งที่เข้าสู่ระบบของคุณเอง ในเพจบทบาทเซิร์ฟเวอร์เลือก sysadmin จากนั้นคลิกตกลง

b) แทนที่จะเชื่อมต่อกับ Object Explorer ให้เชื่อมต่อกับ Query Window โดยใช้ Windows Authentication (ซึ่งรวมถึงข้อมูลประจำตัวของผู้ดูแลระบบของคุณ) (คุณสามารถเชื่อมต่อด้วยวิธีนี้ได้ก็ต่อเมื่อคุณไม่ได้เชื่อมต่อกับ Object Explorer) รันโค้ดดังต่อไปนี้เพื่อเพิ่มล็อกอิน Windows Authentication ใหม่ที่เป็นสมาชิกของบทบาทเซิร์ฟเวอร์คงที่ sysadmin ตัวอย่างต่อไปนี้เพิ่มผู้ใช้โดเมนชื่อ CONTOSO \ PatK

CREATE LOGIN [CONTOSO\PatK] FROM WINDOWS;   ALTER SERVER ROLE
sysadmin ADD MEMBER [CONTOSO\PatK];   

c) ถ้า SQL Server ของคุณกำลังทำงานในโหมดการรับรองความถูกต้องแบบผสมให้เชื่อมต่อกับ Query Window โดยใช้ Windows Authentication (ซึ่งรวมถึงข้อมูลประจำตัวของผู้ดูแลระบบของคุณ) รันโค้ดดังต่อไปนี้เพื่อสร้างล็อกอิน SQL Server Authentication ใหม่ที่เป็นสมาชิกของบทบาทเซิร์ฟเวอร์คงที่ sysadmin

CREATE LOGIN TempLogin WITH PASSWORD = '************';   ALTER
SERVER ROLE sysadmin ADD MEMBER TempLogin;   

คำเตือน:

แทนที่ ************ ด้วยรหัสผ่านที่คาดเดายาก

d) หาก SQL Server ของคุณกำลังทำงานในโหมดการพิสูจน์ตัวตนแบบผสมและคุณต้องการรีเซ็ตรหัสผ่านของบัญชี sa ให้เชื่อมต่อกับ Query Window โดยใช้ Windows Authentication (ซึ่งรวมถึงข้อมูลประจำตัวของผู้ดูแลระบบของคุณ) เปลี่ยนรหัสผ่านของบัญชี sa ด้วยไวยากรณ์ต่อไปนี้

ALTER LOGIN sa WITH PASSWORD = '************';   Warning

แทนที่ ************ ด้วยรหัสผ่านที่คาดเดายาก

ขั้นตอนต่อไปนี้เปลี่ยน SQL Server กลับเป็นโหมดผู้ใช้หลายคน ปิด SSMS

ในตัวจัดการการตั้งค่าคอนฟิกเซิร์ฟเวอร์ SQL ในบานหน้าต่างด้านซ้ายเลือกบริการเซิร์ฟเวอร์ SQL ในบานหน้าต่างด้านขวาคลิกขวาที่อินสแตนซ์ของ SQL Server จากนั้นคลิกคุณสมบัติ

บนแท็บพารามิเตอร์การเริ่มต้นในกล่องพารามิเตอร์ที่มีอยู่เลือก -m แล้วคลิกเอาออก

บันทึก

สำหรับ SQL Server เวอร์ชันก่อนหน้าบางรุ่นจะไม่มีแท็บ Startup Parameters ในกรณีนั้นบนแท็บขั้นสูงคลิกสองครั้งที่พารามิเตอร์การเริ่มต้น พารามิเตอร์จะเปิดขึ้นในหน้าต่างขนาดเล็กมาก ลบ; -m ที่คุณเพิ่มไว้ก่อนหน้านี้แล้วคลิกตกลง

คลิกขวาที่ชื่อเซิร์ฟเวอร์ของคุณจากนั้นคลิกรีสตาร์ท

ตอนนี้คุณควรจะสามารถเชื่อมต่อได้ตามปกติกับหนึ่งในบัญชีซึ่งตอนนี้เป็นสมาชิกของบทบาทเซิร์ฟเวอร์คงที่ sysadmin


2

จริงๆแล้วมันเพียงพอที่จะเพิ่ม -m ให้กับพารามิเตอร์เริ่มต้นบน Sql Server Configuration Manager เริ่มบริการใหม่ไปที่ ssms เพิ่ม sysadmin ช่องทำเครื่องหมายในบัญชีของคุณจากนั้นลบ -m รีสตาร์ทอีกครั้งและใช้งานได้ตามปกติ

ตัวเลือกการเริ่มต้นบริการ Database Engine

-m เริ่มอินสแตนซ์ของ SQL Server ในโหมดผู้ใช้คนเดียว

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