Itu tidak dapat dinonaktifkan sepenuhnya, karena dua alasan:
Saat diinstal, login disediakan untuk NT AUTHORITY\SYSTEM
, NT SERVICE\SQLSERVERAGENT
(atau grup yang berisi akun layanan SQL Agent), dan NT SERVICE\MSSQLSERVER
(atau grup yang berisi akun layanan engine database SQL). Ini adalah sysadmin
-level login yang harus tersedia agar SQL Server berfungsi dengan benar.
Sementara tes cepat mengungkapkan bahwa menghapus ketiga login tersebut hanya mencegah SQL Agen dari restart (mesin database baik-baik saja), saya yakin ada fungsi lain yang bergantung pada dua login lainnya ... mereka diciptakan secara default karena suatu alasan, jadi saya tidak akan dipusingkan dengan mereka. (FYI jika Anda menguji sendiri: opsi Drop & Buat skrip untuk masuk di SSMS tidak keanggotaan skrip peran server.)
Dalam mode single-user, administrator lokal secara otomatis diberikan sysadmin
hak-hak tingkat terlepas terlepas dari apakah ada login yang dibuat yang "mengandung" para pengguna tersebut. Ini gantungan baju ketika Anda mengunci kunci di mobil.
Seperti disebutkan dalam jawaban lain, hanya login Windows yang dibuat secara eksplisit akan memiliki akses untuk terhubung (komentar asli saya salah) - menghapus semua login Windows yang dibuat pengguna sudah cukup untuk mencegah akses.
Jika Anda perlu melangkah lebih jauh dan mencegah login Windows dibuat , berikut ini adalah titik awalnya (Manajemen Berbasis Kebijakan, setidaknya pada 2008, tidak mendukung mencegah hal ini saat terjadi):
CREATE TRIGGER trg_PreventWindowsLogins
ON ALL SERVER
AFTER CREATE_LOGIN
AS
BEGIN
SET NOCOUNT ON;
IF (EVENTDATA().exist('/EVENT_INSTANCE[1]/LoginType[1]/text()[1] eq "Windows (NT) Login"') = 1)
BEGIN
RAISERROR(N'Not allowed to create Windows logins!', 16, 1);
ROLLBACK;
END
END
Tentu saja, siapa pun dengan izin yang cukup dapat mengalahkan ini, tapi itu masalah terpisah ...