Tidak dapat menghapus login SQL Server 2008 R2

8

Saya telah membuat login SQL Server beberapa hari yang lalu. Sekarang saya harus menghapus yang sama. Jadi saya masuk ke SQL Server Management Studio => Security => Login dan memilih login yang ingin saya hapus. Ini menampilkan pesan informasi yang mengatakan

Menghapus login server tidak menghapus pengguna database yang terkait dengan login. Untuk menyelesaikan proses, hapus pengguna di setiap basis data. Mungkin perlu untuk terlebih dahulu mentransfer kepemilikan skema ke pengguna baru.

Mengabaikan pesan ini, ketika saya mengkonfirmasi proses penghapusan saya mendapatkan Kesalahan Fatal yang mengatakan

Drop gagal untuk Login 'iis_login'. (Microsoft.SqlServer.Smo)

Pengecualian terjadi saat menjalankan pernyataan atau kumpulan Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)

Info masuk ini adalah pemilik 1 pekerjaan. Anda harus menghapus atau menugaskan kembali pekerjaan ini sebelum login dapat dibatalkan. (Microsoft SQL Server, Kesalahan: 15170)

Bagaimana cara menghapus login ketika ada pekerjaan (sesuai dengan pesan di atas) yang dimiliki oleh login.

salam, Nirvan.


sumber
Anda harus terlebih dahulu mengubah kepemilikan pekerjaan, atau menghapus pekerjaan, sebelum Anda dapat menghapus login.
Adam Wenger

Jawaban:

13

Jika Anda memiliki banyak pekerjaan dan tidak tahu pekerjaan apa yang dimiliki oleh login ini, pertanyaan ini akan memberi tahu Anda nama pekerjaan yang dimiliki oleh mereka:

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'

Setelah menemukan pekerjaan, Anda dapat menghapusnya menggunakan sp_delete_job:: (Dari MSDN)

EXEC msdb.dbo.sp_delete_job
    @job_name = N'JobToDelete';
Adam Wenger
sumber
Saya melihat Pekerjaan sekarang dengan permintaan Anda. Ini adalah pekerjaan yang dibuat Asp.Net untuk mengelola sesi. Saya sudah menghapus database yang digunakan oleh ASP.net untuk mengelola sesi. Jadi sekarang saya ingin menghapus PEKERJAAN itu. Sayangnya, saya menjalankan versi Express Management Studio dan tidak memiliki SQLServer Agent yang terdaftar di Object Explorer. Adakah saran tentang bagaimana cara menghapus pekerjaan?
1
Saya telah memperbarui jawaban saya untuk memasukkan cara menghapus pekerjaan.
Adam Wenger
Terima kasih banyak, Adam. Pekerjaan dihapus dan login berhasil.
Tidak masalah, senang saya bisa membantu.
Adam Wenger
2

Anda harus mengatur pemilik pekerjaan ke login yang berbeda. Jika Anda melihat properti pekerjaan Anda akan melihat siapa pemiliknya untuk mereka. Yang harus Anda lakukan adalah mengubahnya menjadi login lain.

Berikut ini adalah T-SQL untuk mengubah pemilik pekerjaan:

use msdb
go

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

Adapun pengguna basis data yang dipetakan ke login yang Anda coba turunkan, jika Anda ingin mempertahankan pengguna basis data dan konteks keamanannya, lakukan ini pada mereka:

alter user YourDbUser 
with login = TheLoginThatYouWantTheUserToBeMappedTo
Thomas Stringer
sumber
+1 untuk bantuan dengan memetakan ulang pengguna & jawaban umum yang bagus. Hiu kerja bagus, seperti biasa kelihatannya :)
Adam Wenger
@AdamWenger terima kasih! Saya suka pertanyaan Anda dengan menemukan pekerjaan yang dimiliki oleh login. +1 untuk itu!
Thomas Stringer