SQL Server Single User ve Restricted User Arasındaki Fark

SQL Server’de sistem yöneticisi olarak sistem üzerinde kullanıcıları etkileyecek bir maintenance çalışma yapacağımız zaman o süre zarfında kullanıcıların işlem yapıp yapamayacaklarını dikkate almalıyız. Kullanıcı erişimlerini kısıtlamak için <>Restrict Access özelliği kullanılır.

Bu özellikle 3 seçenek sunar;
Multi User : Default değer olup veritabanına tüm kullanıcıların erişilebileceğini belirtir.
Single User : Aynı anda tek bir kullanıcının erişebileceği anlamına gelir. Bu herhangi bir kullanıcı olabilir. İlk önce kim giriş yaparsa oturumu o almış olur. Bu kullanıcı bağlantısı bitmeden başka kullanıcı o veritabanına erişemez. Bu seçeneği genellikle sistem yöneticisi kendi oturumunda kritik bir işlem yapacağı tercih eder.
Restricted User : Bu seçenek ise Single User’e benzerlik gösterse de tek kullanıcı için değil tüm db_owner, dbcreator ve sysadmin üyeleri için erişimi açık bırakır. Bunların dışındaki kullanıcılara database erişiminde bulunamazlar.

Bir veritabanının bu modunu değiştirmek için ekrandaki şekilde görüldüğü gibi Management Studio üzerinde ilgili veritabanını sağ tıklayıp Properties bölümünden Options sekmesindeki State bölümü kullanılabilir veya ALTER DATABASE komutu tercih edilebilir. Bir veritabanına yönetici olmayan kullanıcılara kapatmak için aşağıdaki gibi mod değiştirilir.

ALTER DATABASE Veritabanı-Adı SET RESTRICTED_USER

Aynı şekilde tek kullanıcı ve çok kullanıcılı moda geçmek için de sırasıyla aşağıdaki gibi düzenleme yapılır.

ALTER DATABASE Veritabanı-Adı SET SINGLE_USER
GO
ALTER DATABASE Veritabanı-Adı SET MULTI_USER

Biz bu şekilde veritabanının erişim modunu değiştirmeye çalışırken o veritabanında çalışan kullanıcılar olabilir. Komutumuzun kullanıcıların bekleyip beklemeyeceklerini belirtmek için yukarıdaki ifadelerin arkasına WITH ROLLBACK IMMEDIATE veya WITH NO_WAIT deyimleri kullanılır.
WITH NO_WAIT seçeneğinde eğer komutumuz bloke edilirse yani veritabanı üzerinde açık transaction veya aktif kullanıcı varsa işlem başarısız olup aşağıdaki hatayı verecektir.
Msg 5070, Level 16, State 2, Line 1
Database state cannot be changed while other users are using the database ‘AK’
Msg 5069, Level 16, State 1, Line 1
ALTER DATABASE statement failed.

WITH ROLLBACK IMMEDIATE seçeneğinde kullanıcıların işlerini bitirmeleri beklenmez. Sorguları rollback edilip oturumları sonlandırılır. Bu seçenekte istenirse işlem hemen uygulanmayıp belli bir süre sonra yapılması da sağlanabilir. Aşağıdaki komut mod değiştirme işleminin 60 sn sonra yapılmasını sağlar.

ALTER DATABASE Veritabanı-Adı SET SINGLE_USER WITH ROLLBACK AFTER 60 SECONDS

SQL Server Single User ve Restricted User Arasındaki Fark” hakkında 4 yorum

  1. Abdullah AKPINAR

    Merhaba, benim size bir sorum olacak ben sql server management studio üzerinden veri tabanımı nasıl şifrelerim ? Cevabınızı bekliyorum.

    Cevapla
  2. Ahmet Kaymaz Yazar

    Abdullah Bey,

    tam olarak neyi neden yapmak istiyorsunuz. Eğer kullanıcıların veritabanınızın adını bile görmesini istemiyorsanız kullanıcı üzerindeki public role’nu kaldırmanız yeterli olacaktır.

    Cevapla
  3. Yasin

    S.a.ben delphi ile yazılmış ve sqlserver2000 li program kullanıyorsun.ancak 01.01.2016 fa giriş yapamadım.soruşturduğumda sqle tarih girilip kısıtlanabiliyormuş. Bu kısitlamayı nasıl kaldırabilirim

    Cevapla
  4. Ahmet Kaymaz Yazar

    a.s Yasin,

    Eğer aradaki programda bu şekilde bir kısıtlama yoksa SQL Server üzerinde Trigger veya Constraint tanımlanarak bu tür veri girişleri engellenebilir. SQL Server üzerinde o tablo üzerinde bu şekilde bir nesne var mı bakmak lazım.

    Cevapla

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir