Làm thế nào để bạn thiết lập lại mật khẩu sa?


22

Tôi đã mất mật khẩu sa trên máy và khi tôi đăng nhập trực tiếp vào máy bằng tài khoản trong nhóm quản trị, SQL Server Management Studio sẽ không cho phép tôi đăng nhập bằng xác thực Windows.

Kế hoạch của tôi chỉ đơn giản là đăng nhập vào máy chủ, kết nối qua Xác thực Windows và đặt lại sa để sử dụng mật khẩu mới. Vì tôi không thể kết nối thông qua Windows xác thực, điều này sẽ không hoạt động.

Làm thế nào khác tôi có thể thiết lập lại mật khẩu sa?


Tìm thấy câu trả lời. Tôi không thể đăng nhập với tư cách quản trị viên tên miền, nhưng sử dụng quản trị viên cục bộ hoạt động tốt.
Daniel Williams

Bạn có nghĩa là một thành viên của nhóm 'Quản trị viên' của máy cục bộ đã có thể làm điều này? Đối với hậu thế, bạn đã thực hiện những bước chính xác nào?
p.campbell

Tài khoản là tài khoản Quản trị viên cục bộ. Tài khoản này là một phần của nhóm Quản trị viên địa phương, cũng như tài khoản miền của tôi. Nhưng chỉ có tài khoản Quản trị viên cục bộ mới có thể sử dụng xác thực Windows để đăng nhập vào Sql Server. Tôi hy vọng điều đó sẽ giúp.
Daniel Williams

bắt đầu phiên bản trong chế độ người dùng đơn cũng sẽ cho phép mọi tài khoản cục bộ là một phần của nhóm Quản trị viên cục bộ truy cập vào thể hiện. Chỉnh sửa: Liên kết @ user1419 chỉ ra điều này.
Shawn Melton

Câu trả lời:


10

Bạn có thể làm theo các bước được đề cập trong liên kết bên dưới để đặt lại mật khẩu SA:

Các bước tóm tắt dưới đây:

  1. Mở Trình quản lý cấu hình máy chủ SQL từ Menu bắt đầu> Chương trình> Microsoft SQL Server 20xx> Công cụ cấu hình> có liên quan đến phiên bản SQL Server mới nhất bạn đã cài đặt (ví dụ: nếu bạn đã cài đặt 2005 và 2012, hãy sử dụng phiên bản 2012). Bạn không có Menu Bắt đầu? Trên màn hình Bắt đầu của Windows 8, bắt đầu nhập SQL Server Con ... cho đến khi nó hiển thị.
  2. Dừng phiên bản SQL Server mà bạn cần khôi phục bằng cách bấm chuột phải vào đối tượng trong Dịch vụ máy chủ SQL và chọn "Dừng"
  3. Nhấp chuột phải vào thể hiện mà bạn vừa dừng, nhấp vào Thuộc tính và trong tab Advanced Advanced, trong hộp văn bản Thuộc tính, thêm vào; có thể truy cập trực tiếp vào tab "Thông số khởi động", nhập "-m" và nhấp vào Thêm mà không phải lo lắng về cú pháp, dấu chấm phẩy hoặc bất cứ điều gì khác).
  4. Nhấp vào nút OK OK, và khởi động lại SQL Server Instance
  5. Sau khi SQL Server Instance bắt đầu ở chế độ một người dùng, tài khoản Quản trị viên Windows có thể kết nối với SQL Server bằng tiện ích sqlcmd bằng xác thực Windows. Bạn có thể sử dụng các lệnh Transact-SQL như "sp_addsrvrolemember" để thêm thông tin đăng nhập hiện có (hoặc một tài khoản mới được tạo) vào vai trò máy chủ sysadmin.

Ví dụ sau đây thêm tài khoản "Buck" trong miền "CONTOSO" vào vai trò sysadmin:

EXEC sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';

Khi quyền truy cập sysadmin đã được khôi phục, hãy loại bỏ ra khỏi bộ dữ liệu khởi động bằng cách sử dụng Trình quản lý cấu hình và khởi động lại phiên bản SQL Server một lần nữa.

LƯU Ý: đảm bảo không có khoảng cách giữa các dòng chữ, chữ cái và chữ viết, bộ phân tích tham số đăng ký rất nhạy cảm với các lỗi chính tả đó. Bạn sẽ thấy một mục trong tệp ERRORLOG của SQL Server cho biết Máy chủ SQL SQL bắt đầu ở chế độ một người dùng.


Tài nguyên bổ sung:

Cuối cùng, bạn luôn có thể sao chép các tệp cơ sở dữ liệu sang một phiên bản khác hoặc thậm chí cài đặt lại SQL Server (thêm tài khoản cục bộ dưới dạng sysadmin trong quá trình đó).


9

Những gì bạn làm sẽ phụ thuộc vào phiên bản SQL Server của bạn, cũng như liệu bạn có đủ khả năng để gỡ bỏ dịch vụ SQL Server để thiết lập thông tin đăng nhập mới hay không. Hai phương thức đầu tiên ở đây không yêu cầu khởi động lại thể hiện:


Đối với phiên bản SQL Server 2005, 2008 và 2008 R2

Bạn có thể kết nối bằng NT AUTHORITY\SYSTEMtài khoản (hoặc các phương thức backlink khác). Có một số chi tiết trong một số câu trả lời ở đây:

Tôi cũng có một mẹo về MSSQLTips.com giải quyết vấn đề này:

Về cơ bản, bạn tải xuống PSExec từ Microsoft, sau đó sử dụng nó để khởi chạy Management Studio sau khi bạn đã cài đặt:

PsExec -s -i "C:\...\Ssms.exe"

Điều này sẽ kết nối với NT AUTHORITY\SYSTEMvà sẽ cho phép bạn thực hiện mọi thứ trong Object Explorer, như:

  • Thay đổi phiên bản sang chế độ SQL Server và Windows xác thực - nhấp chuột phải vào tên Máy chủ, nhấn thuộc tính và thay đổi nút radio nếu hiện tại nó chỉ được đặt thành Windows:

    nhập mô tả hình ảnh ở đây

  • Đặt mật khẩu cho satài khoản - mở rộng Bảo mật, mở rộng Đăng nhập, nhấp chuột phải savà nhấn Thuộc tính và trong hộp thoại kết quả sẽ có hai trường nhập mật khẩu:

    nhập mô tả hình ảnh ở đây

  • Thêm thông tin đăng nhập của riêng bạn dưới dạngsysadmin - nhấp chuột phải vào Đăng nhập, Đăng nhập mới ... nhập tên đăng nhập của bạn (trong biểu mẫu DOMAIN\username), sau đó di chuyển đến tab Vai trò máy chủ và chọn sysadminhộp và nhấp vào OK:

    nhập mô tả hình ảnh ở đây

  • (hoặc, nếu thông tin đăng nhập của bạn đã được liệt kê, nhấp chuột phải, Thuộc tính và đảm bảo sysadminđược kiểm tra trong Vai trò Máy chủ)


Đối với SQL Server 2012 và các phiên bản mới hơn

Bắt đầu với SQL Server 2012, NT Authority\SYSTEMkhông còn được cấp quyền cho SQL Server theo mặc định. Vì vậy, một cách khác để làm điều đó trong các phiên bản mới hơn này đã được Argenis Fernandez chi tiết :

  1. Nếu dịch vụ SQL VSS Writer đang chạy, hãy dừng dịch vụ đó và tạm dừng tất cả các gói bảo trì hoặc phần mềm sao lưu của bên thứ 3 có thể dựa vào nó.
  2. Mở regedit.exevà thay đổi giá trị của HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SQLWriter\ImagePathđể trỏ đến SQLCMD.exe, sẽ được trong C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\**<...110|120|130|140...>**\Tools\Binn. Sau khi chỉnh sửa, giá trị đăng ký sẽ trông giống như sau (xin lỗi vì đã cuộn):

    "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];"
  3. Hãy thử khởi động lại dịch vụ SQL VSS Writer (bạn sẽ gặp lỗi; không sao cả).

  4. Bây giờ bạn có thể kết nối như sysadminsử dụng YourDomain\YourUserName. Vì vậy, hãy dừng dịch vụ SQL VSS Writer, sửa chữa sổ đăng ký và khởi động lại dịch vụ (nếu bạn cần nó đang chạy hoặc nếu nó đang chạy trước khi bạn bắt đầu việc này).

Tôi đã trải qua điều này chi tiết hơn rất nhiều trong một mẹo thứ hai:

Mặc dù khi tôi viết mẹo đó, tôi đã sử dụng một cách tiếp cận rườm rà hơn trong việc tạo một bản sao SQLCMD.exevà thay thế sqlwriter.exe- dễ dàng hơn nhiều khi chỉ SQLCMD.exetrực tiếp dịch vụ .


Nếu bạn có đủ khả năng để gỡ dịch vụ SQL Server xuống

Có một đường dẫn được hỗ trợ chính thức từ Microsoft yêu cầu khởi động lại phiên bản trong chế độ người dùng:

Ngoài ra còn có một hàm trong dbatools.io , một giải pháp Powershell để quản lý SQL Server, được gọi là Reset-DbaAdmin:


Bảo mật không phải là vấn đề chính ở đây

Tôi thấy nhiều người kêu gọi Microsoft "sửa chữa" những lỗ hổng được gọi là "lỗ hổng" này. Đây là những cách tiếp cận hợp lệ để khôi phục quyền truy cập vào một phiên bản của SQL Server mà bạn sở hữu một cách hợp pháp. Tất cả đều yêu cầu các đặc quyền nâng cao trên máy chủ vật lý nơi SQL Server cư trú; như tôi đã nói với nhiều người, nếu bạn không muốn các nhà phát triển gây rối với cài đặt SQL Server, đừng biến họ thành quản trị viên.


phương pháp này có cho phép tôi kích hoạt tài khoản SA không? Tôi bị kẹt ở vị trí mà tài khoản SA của tôi bị vô hiệu hóa và tôi có một nhóm AD với vai trò Công khai. Ngoài ra, phương pháp của bạn được liệt kê, tôi sẽ có thể thực hiện các bước này với việc gỡ xuống ví dụ không? Tôi yêu cầu bởi vì máy chủ của tôi đang ở trong một môi trường sản xuất.
Sean Perkins

1
@Sean có, bạn sẽ có thể kích hoạt lại sa và / hoặc tạo một tài khoản xác thực SQL khác hoặc thêm người dùng AD của bạn (không phải nhóm!) Cụ thể vào vai trò nâng cao hơn. Không ai trong số này sẽ yêu cầu khởi động lại SQL Server (trường hợp duy nhất được yêu cầu là thay đổi giữa xác thực hỗn hợp và chỉ Windows).
Aaron Bertrand

Tôi nhận được lỗi sau khi tôi thử quá trình phân định của bạn. Tôi chắc chắn cũng chụp ảnh màn hình của các tài khoản duy nhất được liệt kê. Có một sự thay đổi tại một số điểm trong SQL 2012 sẽ không cho phép phương thức này? Phiên bản hiện tại của tôi là 11.0.3128 . Hơn nữa, tôi không thực hiện loại thay đổi nào, tôi sẽ nhận được một số biến thể của lỗi cho biết tôi không có quyền. Một điều cuối cùng, tôi nghi ngờ điều này tạo ra sự khác biệt, nhưng tôi đã mở PowerShell với quyền Quản trị viên, thực thi cmd.exe, sau đó psexec -i -s "C: \ ...... smss.exe"! [Lỗi tạo tài khoản] ( i.stack.imgur.com/ITOja.p
Sean Perkins

Ảnh đính kèm hiện không hiển thị bất cứ điều gì, nhưng nó có "SA" và "NT AUTHORITY \ HỆ THỐNG" là các tài khoản được liệt kê duy nhất. Thông báo lỗi tôi nhận được là "Người dùng không có quyền thực hiện hành động này. (Microsoft SQL Server, Lỗi: 15247)"
Sean Perkins

@Sean PowerShell? PSExec không liên quan gì đến PowerShell. Bạn có phải là quản trị viên cục bộ trên máy không? Bạn có chắc không?
Aaron Bertrand
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.