Bilgi Bankası
Yerinde Bilgisayar > Yardım Masası > Bilgi Bankası

Sql Single User Update Multi User

Çözüm

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.

1
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.

1
2
3
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.

1
ALTER DATABASE Veritabanı-Adı SET SINGLE_USER WITH ROLLBACK AFTER 60 SECO
 
Bu içerik sorununuzu çözmenizde yardımcı oldu mu? evet / hayır
İlgili Makaleler Karmaşık Şifre
İçerik Detayları
İçerik Numarası: 17
Kategori: Server & İşletim Sistemleri
Eklenme Tarihi: 2017-03-08 13:50:47
Gösterim Sayısı: 65
Verilen Puan (Oylar): İçerik Puanı 5.0/5.0 (1)

 
« Geri Dön

 
Powered by Help Desk Software HESK, brought to you by SysAid