Veritabanı oluştururken database sahibini(owner) genelde default bırakmak gerekir. Owner’ını bu şekilde oluşturmak aslında önerilmeyen bir yöntem çünkü bu login database üzerinde tam yetkili olur ve istemediğimiz bir durum oluşabilir. Şunuda belirtmek gerekirki login şifre değişikliğinde herhangi bir sorunla karşılaşmaz veritabanına yetkili diğer kullanıcılar. Normal bir şekilde Login’imizi oluşturduktan sonra user mapping yöntemiyle veritabanı üzerinde yetkilendirmek gerekir.

Veritabanımızı bu şekilde oluşturduktan sonra login’imiz otomatikmen ilgili veritabanı üzerinde db_owner yetkisine sahip oluyor. Bu login’i disable etsek bile veritabanımız erişilemez olmuyor. Başka bir login DB vertabanının üzerinde yetkilise DBLOGIN ise disable ise sorunsuz bir şekilde çalışacaktır.
DB veritabanımızın owner’ını aşağıdaki komut ile değiştirebiliriz.
use [master];
GO
USE [DB]
GO
ALTER AUTHORIZATION ON DATABASE::[DB] TO [S1\Administrator]
GO

Kullanıcı ilk veritabanı oluştururken veritabanı altında default database sekmesi gözükmektedir. Bu yapı şunu sağlamaktadır kullanıcı login olduğunda bu database üzerinde yetkilise new query’de aşağıda belirtildiği gibi DB database’i gelecektir.

Şimdi örnekle pekiştirelim A1 diye bir login oluşturuyorum bu login’i DB database üzerinde ve birden fazla database üzerinde yetkilendiriyorum. Daha sonra bu kullanıcıyla login olduğumda önüme gelecek ilk pencere ne olacak onu gözlemleyelim.


Tüm db’lere public yetkisi verdikten sonra A1 kullanıcısıyla login oluyorum. Yeni bir query açıyorum bakalım DB database’i altındamı açacak. Yukarıda default olarak DB veritabanı verdiğimiz için yeni bir query’i ilgili database’e bağlı açmış oldu.


Bir veritabanı scheme,login vb. işlemleri ALTER AUTHORIZATION yapısıyla tüm owner’a sahip işlemlerin hepsini değiştirebiliriz. Scheme yapısıyla ilgili örneği görmekteyiz.

ALTER AUTHORIZATION ON SCHEMA::test TO dbo
Aşağıdaki komut ile bir instance’da hangi veritabanının ne zaman oluşturulduğunu bulabiliriz. Veritabanı ve oluşturma tarihinin yanında hangi kullanıcının oluşturduğunu görebilir. Login oluşturma tarihi değil veritabanı oluşturma tarihi.
select d.name VeritabaniAdi,
l.name OlusturanKullanici,
d.create_date OlusturmaTarihi
from sys.databases d
join sys.syslogins l on l.sid=d.owner_sid
order by d.name

Belirli yıllar arasında oluşturulan login’leri bulmak için aşağıdaki script kullanılabilir.
select loginname,createdate from sys.syslogins where createdate
between '2023-12-31 23:59:59.999' and '2025-01-01 00:00:00.000'
order by loginname
Aşağıdaki komut ile bir instance altında bulunan loginlerinin oluşturulma ve en son güncellendiği tarihlerini görebiliriz. Dikkat edilmesi gereken login create scripti alınmışsa script çalıştırıldığı tarih baz alınır.
SELECT
name AS login_name,
create_date AS created_date,
modify_date AS last_modified_date
FROM
sys.server_principals
WHERE
type IN ('S', 'U') --'S' = SQL Server Auth.,'U'=Windows Authentication
ORDER BY create_date;

Başka bir makalede görüşmek dileğiyle..
“Ey insanlar! Rabbinize saygısızlıktan sakının; hiçbir babanın evlâdından fayda göremeyeceği, evlâdın da babasından hiçbir yarar sağlayamayacağı bir günden korkun. Allah’ın vaadi gerçektir. Sakın dünya hayatı sizi aldatmasın; o, yoldan çıkarıcı da (şeytan) Allah hakkında sizi aldatmasın.”Lokman-33