9 Şubat 2009 Pazartesi

SQL Server Instance' ına Sistem Yöneticisi Olarak Giremediğinizde

Merhaba arkadaşlar,

Olmaz demeyin, gerçekten olduğuna kaç kere şahit oldum. Kullanıcılar bazen farkında olmadan tüm System Administrator yetkisine sahip Login' leri silebiliyorlar ve bunun sonucunda da SQL Server Instance' larına yönetici olarak bağlanamıyorlar.

Bu gibi durumlarda genellikle başvurulan yöntem, SQL Server Instance' ının sistemden kaldırılması, yeni bir SQL Server Instance' ının kurulması ve veritabanlarının yeni Instance' a bağlanması oluyor. Bu şekilde, eğer sistem veritabanlarının (master, msdb gibi) yedekleri yoksa, tüm Maintanence Plan' lar, Job' lar, Login' ler vb. yok oluyor. Zaten bu sistem veritabanlarının yedekleri olsa dahi, Login bilgilerinin saklandığı "master" veritabanında da "sysadmin" rolüne üye bir Login bulunmayabilir. Ayrıca bu, çok zahmetli ve zaman alıcı bir iş olacaktır.

Bunun yerine aşağıdaki yöntemi uygulamanızı tavsiye ederim:

- Sisteme Yerel Yöneticiler (Local Administrators) Windows grubuna üye bir kullanıcıyla oturum açın,
- SQL Server Intance' ınızı Tek Kullanıcılı Mod (Single User Mode)' da açın, bunun için:
- SQL Server Configuration Manager' ı açın,
- SQL Server 2005 Services isimli düğüme tıklayın ve sağdaki pencereden ilgili SQL Server Instance' ınızın
özelliklerine (Properties) gidin,
- "Advanced" sekmesinde, "Startup Parameters" özelliğini bulun ve oraya, Resim-1' deki gibi "-m" parametresini
ekleyin.
- Parametre ekleme işleminden sonra SQL Server Instance' ınızın Veritabanı Motoru (Database Engine) servisini
durdurup yeniden başlatmanız gerekiyor.

Resim-1


Burada dikkat etmeniz gereken şey ise, SQL Server Instance' ınızın artık sadece bir kullanıcı kabul edeceğidir. Bu yüzden ilgili SQL Server Instance' ına ait SQL Server Agent servisinin çalışmadığından emin olun.

Tüm bu gereklilikleri yerine getirdikten sonra, SQL Server Management Studio (SSMS)' yu açın ve Query Editor' ü kullanarak ilgili SQL Server Instance' ınıza bağlanın. Object Explorer' dan değil, Query Editor' den bağlandığınıza emin olun, çünkü Object Explorer' dan bağlandığınızda sistemi eski haline getirmek için Login değişiklikleri yapmak istediğinizde SSMS SQL Server Instance' ınıza birden fazla bağlantı kurmak isteyecektir ve sistem de bunu kabul edemeyeceği için bu da hataya neden olacaktır.

SSMS' i açtıktan sonra yeni bir Query Editor penceresi açmak için SSMS' in sol üst köşesinde bulunan New Query düğmesine tıklayabilir veya File->New->Database Engine Query menüsünü kullanabilirsiniz.

Query Editor' de yeni bir sorgulama penceresi açtıktan sonra System Administrator haklarına sahip yeni bir kullanıcı oluşturmak için aşağıdaki komutları kendi ortamınıza uyarlayarak çalıştırmanız gerekiyor:

-- Yeni bir Windows Login oluşturma:
CREATE LOGIN [Test6\Administrator] FROM WINDOWS

-- Oluşturulan Login' i "sysadmin" Server Fixed Role' üne üye yapma:
EXEC sp_addsrvrolemember 'test6\Administrator', 'sysadmin';

Yeni Login oluşturma hakkında daha fazla bilgi için aşağıdaki adrese gözatın:
http://msdn.microsoft.com/en-us/library/ms189751(SQL.90).aspx

sp_addsrvrolemember Sistem Stored Procedure' ü için ise aşağıdaki adresi inceleyebilirsiniz:
http://msdn.microsoft.com/en-us/library/ms186320.aspx

Yeni Login de oluşturulup gerekli haklar verildikten sonra SQL Server Instance' ınıza başlangıç parametresi olaran eklediğiniz "-m" parametresini yukarıda izlediğiniz yolu izleyerek çıkarıp, SQL Server Instance' ınızın Database Engine servisini tekrar başlatmanız gerekir ve artık oluşturduğunuz Login ile SQL Server Instance' ınıza Sistem Yöneticisi olarak bağlanabilirsiniz!



Ekrem Önsoy

Hiç yorum yok: