Cho phép truy cập hệ thống tệp vào tài khoản ảo SQLSERVERAGENT


23

Tôi đang cố gắng cấp NT Service\SQLSERVERAGENTquyền truy cập hệ thống tệp tài khoản Windows, dựa trên câu trả lời được đánh dấu trong câu hỏi này . Tôi tin rằng đó là tài khoản dịch vụ ảo và nó không hiển thị trong bảng điều khiển -> khu vực tài khoản người dùng .

Làm cách nào để tôi cấp quyền truy cập tài khoản dịch vụ này vào hệ thống tệp? Cụ thể, trên Windows 7.

Tôi đã đọc một số cách tiếp cận và dường như không có lựa chọn nào cho tôi. Tôi đã thử một cách tiếp cận PowerShell, nhưng các lệnh AD không phải là các lệnh hợp lệ. Tôi thậm chí đã tải xuống và cài đặt các bản vá windows yêu cầu cho các lệnh đó. Tôi cũng đã đọc rằng tôi sẽ có thể thực hiện việc này thông qua Trình quản lý cấu hình máy chủ SQL hoặc Studio quản lý. Tôi dường như không thể tìm ra nơi để điều chỉnh các quyền này, mặc dù.

Quá trình SQL Server Agent không khởi động được, với thông báo lỗi sau:

Login failed for user 'NT SERVICE\SQLSERVERAGENT'.  
Reason: Failed to open the explicitly specified database 'msdb'.  
[CLIENT: <local machine>]

Dựa trên Google của tôi, nó phải được thực hiện với quyền của tài khoản này.

Tôi không chắc liệu cơ sở dữ liệu có bị hỏng hay không, nhưng nó cho biết cơ sở dữ liệu ở trạng thái Bình thường . Đăng nhập SQL Server Agent là một phần của sysadminpubliccác nhóm.

Câu trả lời:


18

Để trả lời cụ thể câu hỏi của bạn , đây là cách bạn cấp quyền truy cập đĩa cho tài khoản Đại lý SQL Server tích hợp. Nhưng hãy đọc tiếp khi tôi trả lời những gì tôi tin là vấn đề thực sự:

1.> Nhấp chuột phải vào ổ đĩa của bạn, chọn thuộc tính, nhấp vào nút Thêm và nhập tài khoản SQLSERVERAGENT (đảm bảo tên miền của bạn không được chọn trong hộp văn bản Từ vị trí này, nhưng thay vào đó là tên máy tính của bạn):

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

2.> Nhấp vào nút Kiểm tra Tên để xác thực rằng tài khoản hợp lệ:

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

3.> Bây giờ, thêm quyền cho phép bạn cần vào tài khoản SQLSERVERAGENT. Đối với mục đích xử lý sự cố, bạn có thể muốn cung cấp toàn quyền kiểm soát và sau đó thu nhỏ lại sau khi cần:

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

Điều đó đang được nói , có lẽ bạn chỉ cần sử dụng SQL Server Cấu hình máy chủ để thêm lại người dùng Tác nhân SQL - theo các nhận xét tôi thấy về msdb và thông tin đăng nhập. Trình quản lý cấu hình tạo ra nhiều thay đổi cho SQL Server hơn là sử dụng applet Windows Services - vì vậy Trình quản lý cấu hình phải luôn được sử dụng để thay đổi BẤT K Service dịch vụ SQL nào.

Điều này sẽ khắc phục sự cố nếu ai đó có thể đã thay đổi tài khoản trong Windows Services khiến dịch vụ không khởi động được. Bạn cần đặt lại trong Trình quản lý cấu hình. Làm như vậy cho phép Trình quản lý cấu hình thêm vào Máy chủ SQL các quyền cần thiết để quản lý cơ sở dữ liệu MSDB cho tài khoản Dịch vụ cục bộ (NT SERVICE \ SQLSERVERAGENT) trong khi thay đổi tài khoản trong applet dịch vụ Windows thì không.

Hãy cẩn thận: Các phiên bản SQL Server Express trên 2000 không bao gồm Tác nhân SQL. Một số khía cạnh của nó có thể xuất hiện ở đó, nhưng không thể sử dụng được trong phiên bản Express của sản phẩm.

Để bắt đầu, hãy mở Trình quản lý cấu hình máy chủ SQL và bấm đúp vào dịch vụ Đại lý máy chủ SQL trong Dịch vụ máy chủ SQL. Chọn nút radio Tài khoản tích hợp và chọn Dịch vụ cục bộ và nhấp vào nút Áp dụng. Quan trọng : nếu bạn đã thấy rằng tài khoản này được chọn, hãy chọn một tài khoản khác và nhấp vào nút Áp dụng. Sau đó, thay đổi lại thành Dịch vụ cục bộ và nhấp vào nút Áp dụng để cho phép Trình quản lý cấu hình thêm quyền MSDB chính xác cho dịch vụ Đại lý SQL để bắt đầu. Bây giờ, khởi động lại SQL Server Agent để phản ánh cài đặt mới này.

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


1
Tài khoản SQL Server Agent của tôi đã được đặt NT Service\SQLAgent$MyInstanceNamevà cố gắng đặt bảo mật trên một thư mục và nhấn Kiểm tra tên cho biết Tên không tìm thấy và sẽ không tìm thấy nó. Sau nhiều lần thất vọng, tôi nhận ra rằng 'Từ vị trí này' mặc định khi nhấn Thêm để thêm quyền không được đặt vào máy cục bộ của tôi, nó được đặt thành miền của tôi. Thay đổi nó thành máy cục bộ của tôi (nút gốc trong cây) cho phép nó phát hiện NT Service\SQLAgent$MyInstanceNametài khoản của tôi để thêm nó vào quyền của thư mục.
NibblyPig

Tôi đã nhận được "MyInstanceName" từ Nhật ký sự kiện đã ghi lại các lỗi.
Jasen

2

Tôi đã giải quyết vấn đề này bằng cách đặt tài khoản Đăng nhập Tác nhân SQL Server thành LocalSystem.


2
Mặc dù đây là một cách giải quyết có thể giúp mọi thứ hoạt động, nhưng nó thường được coi là kém an toàn hơn so với sử dụng giải pháp được đề xuất trong câu trả lời này
RDFozz

2

Tôi đồng ý bực bội .. rõ ràng nó đơn giản như chỉ cần gõ tên. http://zarez.net/?p=3187

Tóm tắt: Nhập NT SERVICE \ MSSQLSERVER và sau đó không nhấp vào tên kiểm tra chỉ cần nhấn OK và bạn có thể đặt quyền thư mục cho tài khoản đại lý SQL.


1
Chào mừng bạn đến với DBA SE! Tôi đã không bỏ phiếu xuống. Câu trả lời của bạn rơi vào mục "câu trả lời chỉ liên kết". Những câu trả lời trở nên khó hiểu, khi phía xa đi xuống. Những người đánh giá bài viết của bạn nên nói điều đó với bạn, đó là sai lầm của họ. Vì vậy: 1) câu trả lời của bạn thực sự nên là một câu trả lời (cho câu hỏi ở trên cùng) 2) nếu bạn đang trích dẫn bất cứ điều gì, giới thiệu một trang web, sao chép-dán cũng quan trọng nhất vào bài viết. | Tôi đã cho bạn một upvote, nhưng tôi đề nghị để làm cho thuyết phục cho các nhà phê bình khác.
peterh nói phục hồi Monica

Lời khuyên tuyệt vời @peterh, cảm ơn bạn rất hữu ích. V Jason, tôi đã thêm tóm tắt từ nhận xét của bạn vào câu trả lời của bạn - điều đó có thể là đủ nhưng bạn có thể muốn xem lại để xem bạn có muốn thêm bất cứ điều gì khác không. Tất cả các cải tiến được đánh giá cao!
Jack Douglas
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.