Không thể xóa đăng nhập SQL Server 2008 R2


8

Tôi đã tạo một SQL Server đăng nhập một vài ngày trước. Bây giờ tôi cần phải xóa như vậy. Vì vậy, tôi đã vào SQL Server Management Studio => Security => Đăng nhập và chọn thông tin đăng nhập mà tôi muốn xóa. Nó hiển thị một thông báo thông tin cho biết

Xóa đăng nhập máy chủ không xóa người dùng cơ sở dữ liệu được liên kết với thông tin đăng nhập. Để hoàn thành quá trình, xóa người dùng trong mỗi cơ sở dữ liệu. Trước tiên có thể cần chuyển quyền sở hữu các lược đồ cho người dùng mới.

Bỏ qua thông báo này, khi tôi xác nhận quá trình xóa, tôi nhận được một Lỗi nghiêm trọng.

Thả không thành công cho Đăng nhập 'iis_login'. (Microsoft.SqlServer.Smo)

Một ngoại lệ đã xảy ra trong khi thực hiện một câu lệnh hoặc lô Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)

Đăng nhập này là chủ sở hữu của 1 công việc. Bạn phải xóa hoặc gán lại các công việc này trước khi đăng nhập có thể bị hủy. (Máy chủ Microsoft SQL, Lỗi: 15170)

Làm cách nào để xóa thông tin đăng nhập khi có công việc (theo thông báo ở trên) thuộc sở hữu của thông tin đăng nhập.

Trân trọng, Nirvan.


Trước tiên, bạn sẽ phải thay đổi quyền sở hữu công việc hoặc xóa công việc trước khi bạn có thể xóa thông tin đăng nhập.
Adam Wenger

Câu trả lời:


13

Nếu bạn có nhiều công việc và không biết công việc nào thuộc sở hữu của thông tin đăng nhập này, truy vấn này sẽ cho bạn biết tên của các công việc thuộc sở hữu của họ:

SELECT j.name
FROM msdb.dbo.sysjobs AS j
INNER JOIN sys.syslogins AS l ON j.owner_sid = l.sid
WHERE l.name = 'loginYouWantToDelete'

Khi bạn đã tìm thấy công việc, bạn có thể xóa nó bằng cách sử dụng sp_delete_job:: (Từ MSDN)

EXEC msdb.dbo.sp_delete_job
    @job_name = N'JobToDelete';

Tôi thấy công việc bây giờ với truy vấn của bạn. Đây là công việc mà Asp.Net tạo ra để quản lý các phiên của nó. Tôi đã xóa cơ sở dữ liệu được sử dụng bởi ASP.net để quản lý phiên. Vì vậy, bây giờ tôi muốn xóa CÔNG VIỆC đó. Thật không may, tôi đang chạy phiên bản Express của Management Studio và nó không có SQLServer Agent được liệt kê trong Object Explorer. Bất cứ lời khuyên về làm thế nào để tôi xóa công việc?

1
Tôi đã cập nhật câu trả lời của mình để bao gồm cách xóa một công việc.
Adam Wenger

Cảm ơn rất nhiều Adam. Đã xóa công việc và đăng nhập thành công.

Không phải là một vấn đề, vui mừng tôi có thể giúp đỡ.
Adam Wenger

2

Bạn cần đặt chủ sở hữu của các công việc thành một đăng nhập khác. Nếu bạn nhìn vào các thuộc tính của công việc, bạn sẽ thấy ai là chủ sở hữu của chúng. Tất cả bạn phải làm là thay đổi đó để đăng nhập khác.

Đây là T-SQL để thay đổi chủ sở hữu của công việc:

use msdb
go

exec sp_update_job @job_name= 'Your Job Name', 
@owner_login_name= 'Your New Job Owner'
go

Đối với người dùng cơ sở dữ liệu được ánh xạ tới thông tin đăng nhập bạn đang cố gắng bỏ, nếu bạn muốn giữ người dùng cơ sở dữ liệu và bối cảnh bảo mật của họ, hãy thực hiện điều này với họ:

alter user YourDbUser 
with login = TheLoginThatYouWantTheUserToBeMappedTo

+1 để được trợ giúp với ánh xạ lại người dùng và câu trả lời chung chung. Shark làm việc tốt, như thường lệ dường như :)
Adam Wenger

@AdamWenger cảm ơn bạn! Tôi thích truy vấn của bạn với việc tìm kiếm các công việc mà một đăng nhập sở hữu. +1 cho điều đó!
Thomas Stringer
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.