in Eski Blog Yazılarım

MSSQL Tablo Haklarını değiştirme.

Bir kaç günden beri müşteriler habire SQL server loginlerini değiştiriyorlar.. Bizim kontrol panelimizde user’ı açarken tabloların ownerlarını ilk açılan kullanıcı yapıyor ve eski login değiştirilmek için silinmeye kalkınca “The selected user cannot be dropped because the user owns objects.” hatası alıyor kullanıcı.

Hemen enterprise manager’ı açıp user’ı sileyim haklarını ayarlayım dedim ama sağ olsun enterprise managerda bunu yapabileceğim bir menü yok varsa bile fonksiyon disable.Böyle olunca iş başa düştü ve aşağıdaki Prosedür bulundu :

DECLARE @currentObject nvarchar(517)
DECLARE @qualifiedObject nvarchar(517)
DECLARE @currentOwner varchar(50)
DECLARE @newOwner varchar(50)

SET @currentOwner = 'ESKIUSER'
SET @newOwner = 'YENIUSER'

DECLARE alterOwnerCursor CURSOR FOR
SELECT [name] FROM dbo.sysobjects 
WHERE xtype = 'U' or xtype = 'P'
AND LEFT([name], 2) <> 'dt'

OPEN alterOwnerCursor
FETCH NEXT FROM alterOwnerCursor INTO @currentObject
WHILE @@FETCH_STATUS = 0
BEGIN
   SET @qualifiedObject = CAST(@currentOwner as varchar) + '.' + CAST(@currentObject as varchar)
   EXEC sp_changeobjectowner @qualifiedObject, @newOwner
   FETCH NEXT FROM alterOwnerCursor INTO @currentObject
END
CLOSE alterOwnerCursor
DEALLOCATE alterOwnerCursor

Tüm veritabanı toblolarının sahibini değiştirir.

  • Burdan Bulundu
  • Yorum Bırak

    Comment