Bu makalede veritabanında herhangi bir login silineceği zaman aşağıdaki hata mesajı alınmaktadır.

The database principal has granted or denied permissions to objects in the database and cannot be dropped.
SQL Server’da bir kullanıcı (LOGIN1) silinmek istendiğinde, bu kullanıcının veritabanında nesnelere (tablo, prosedür, view vb.) GRANT veya DENY olması durumunda, kullanıcı doğrudan silinemez. Önce bu izinlerin kaldırılması gerekir.
Aşağıdaki komut ile veritabanı seviyesinde bulunan yetkilendirmeleri görebiliriz.
USE TEST;
select *
from sys.database_permissions
where grantor_principal_id = user_id ('LOGIN1');

İlgili veritabanı altında permissions bölümünden tüm login’lerin yetkileri alındıktan ve LOGIN1 kullanıcısının yetkileri alındıktan sonra silme işlemi yapılabilir.

SSMS arayüzün den silme işlemini yapabileceğimiz gibi aşağıdaki komutlarlada silme işlemlerini yapabiliriz.
Kullanıcının tüm izinlerini geri almak için:
USE [YourDatabaseName];
GO
REVOKE ALL PERMISSIONS FROM [LOGIN1];
Eğer belirli nesneler üzerinde izinleri varsa, aşağıdaki gibi teker teker de yapabilirsiniz:
REVOKE SELECT, INSERT ON [dbo].[TableName] TO [LOGIN1];
Kullanıcıyı Yeniden Silmeyi Deneyin:
USE [YourDatabaseName];
GO
DROP USER [LOGIN1];
Eğer Kullanıcı Schemanın Sahibi İse: Kullanıcı bir şemanın sahibiyse, önce şemanın sahipliğini başka bir kullanıcıya aktarın:
ALTER AUTHORIZATION ON SCHEMA::[SchemaName] TO [dbo];
Eğer Kullanıcı Veritabanı Sahibi (dbo) İse:
Kullanıcıyı db_owner rolünden çıkarmalısınız:
EXEC sp_droprolemember 'db_owner', 'LOGIN1';
Tüm jobların ownerlarını görmek için şu script’i kullanabilirsiniz. Herhangi bir job’da kullanıcı owner olduğu zamanda silinmeyebilir. Bunun için o job üzerinde o kullanıcının kaldırılması gerekmektedir.
SELECT s.name AS JobName, l.name AS JobOwner
FROM msdb..sysjobs s
LEFT JOIN master.sys.syslogins l ON s.owner_sid = l.sid
WHERE l.name IS NOT NULL
ORDER by l.name
Başka makalede görüşmek dileğiyle
İyi bilin ki, şu dünya hayatı boş bir oyalanma ve oyundan başka bir şey değildir. Âhiret yurduna gelince, işte gerçek hayat odur. Keşke bunu bilmiş olsalardı! Ankebût-64. Ayet