19 Ekim 2012 Cuma

C# ile SQL Server'ın Yüklü Olduğunu Kontrol Etme

Merhaba Webkolog okurları,

Bugün sizlere, C# .NET Framework 4 kullanarak ve Microsoft Visual Studio 2010 geliştirme ortamında, bir sistemde SQL Server'ın yüklü olup olmadığını nasıl kontrol edebileceğinizi anlatacağım. Bu, özellikle veritabanı gerektiren uygulamalar geliştirirken oldukça işinize yarayacak bir yöntem.

Neden Bu Kontrolü Yapmalıyız?

Uygulamanızın doğru çalışabilmesi için belirli bir veritabanı sisteminin (bu durumda SQL Server) kurulu olması gerekebilir. Kullanıcının sisteminde bu yazılımın olup olmadığını önceden kontrol etmek, olası hataları ve kullanıcı deneyimini olumsuz etkileyen durumları engellemenize yardımcı olur. Ayrıca, eğer SQL Server yoksa, kurulum sürecini otomatikleştirerek kullanıcıya kolaylık sağlayabilirsiniz.

Yöntem: Registry'den Kontrol

SQL Server kurulum bilgileri, Windows kayıt defterinde (Registry) saklanır. Bu bilgileri kullanarak, SQL Server'ın yüklü olup olmadığını kontrol edebiliriz. İşte bu işlemi gerçekleştirecek C# metodu:

private void checkSQL()
{
    // HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names
    // Eğer bu bilgisayarda SQL SERVER veya SQLSERVEREXPRESS sürümü yüklendi ise yukarıda regedit bölümünde yüklü SQL SERVER instance'leri yer alacaktır.
    string[] yuklusqller = (string[])Registry.LocalMachine.OpenSubKey("Software").OpenSubKey("Microsoft").OpenSubKey("Microsoft SQL Server").GetValue("InstalledInstances");
// Eğer kullanıcının bilgisayarında SQLExpress yüklü değilse
    var yukluozellikler = (from s in yuklusqller where s.Contains("SQLEXPR_x64_ENU") select s).FirstOrDefault();
    if (yukluozellikler == null)
    {
        DialogResult sonuc = MessageBox.Show("Programı kullanabilmek için SQLEXPRESS gereklidir. Bu Programı Yüklemek istiyor musunuz?", "UYARI", MessageBoxButtons.YesNo);
        if (sonuc == DialogResult.Yes)
        {
            string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\SQLEXPR_x64_ENU.exe";
            Process pro = new Process();
            pro.StartInfo.FileName = path;
            // Aşağıdaki parametreleri SQLEXPRESS setup dosyama göndererek kurulumu başlatırsam kullanıcıya kurulum yeri v.s gibi bilgileri sormayacak ve doğrudan kuruluma geçecektir.
            pro.StartInfo.Arguments = "/qb INSTANCENAME=\"SQLEXPRESS\" INSTALLSQLDIR=\"C:\\Program Files\\Microsoft SQL Server\" INSTALLSQLSHAREDDIR=\"C:\\Program Files\\Microsoft SQL Server\" INSTALLSQLDATADIR=\"C:\\Program Files\\Microsoft SQL Server\" ADDLOCAL=\"All\" SQLAUTOSTART=1 SQLBROWSERAUTOSTART=0 SQLBROWSERACCOUNT=\"NT AUTHORITY\\SYSTEM\" SQLACCOUNT=\"NT AUTHORITY\\SYSTEM\" SECURITYMODE=SQL SAPWD=\"\" SQLCOLLATION=\"SQL_Latin1_General_Cp1_CS_AS\" DISABLENETWORKPROTOCOLS=0 ERRORREPORTING=1 ENABLERANU=0";
            // Process için pencere oluştur
            pro.StartInfo.CreateNoWindow = true;
            // Process arka planda çalışsın.
            pro.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            pro.Start();
            // SQL kurulumu bitene kadar bekle
            pro.WaitForExit();
        }
        else
        {
            // SQLEXPRESS'i kurmak istemiyorsa programı sonlandır
            this.Close();
        }
    }
}

Metodun Açıklaması:

  1. Registry'den SQL Instance'larını Almak:
    • Registry.LocalMachine.OpenSubKey("Software").OpenSubKey("Microsoft").OpenSubKey("Microsoft SQL Server").GetValue("InstalledInstances") kodu, kayıt defterindeki ilgili anahtara giderek, yüklü olan SQL Server instance'larının listesini bir dizi olarak alır.
  2. SQL Express Kontrolü:
    • yuklusqller dizisi içinde "SQLEXPR_x64_ENU" ifadesini arayarak, SQL Server Express sürümünün yüklü olup olmadığını kontrol ediyoruz. Bu kontrolü, uygulamanızın gereksinimlerine göre değiştirebilirsiniz. Farklı bir sürümü kontrol etmek isterseniz, aranan dizeyi buna göre ayarlamanız gerekir.
  3. Yükleme İşlemi (Gerekirse):
    • Eğer SQL Server Express yüklü değilse, kullanıcıya bir mesaj kutusu gösterilir.
    • Kullanıcı "Evet" seçeneğini seçerse, önceden indirilmiş olan SQL Server Express kurulum dosyası (SQLEXPR_x64_ENU.exe) otomatik olarak çalıştırılır. Burada dikkat edilmesi gereken nokta, path değişkeninde belirtilen dosyanın, uygulamanın çalıştığı sistemde doğru konumda olması gerektiğidir. Bu yolu, kendi sisteminizdeki kurulum dosyasının konumuna göre ayarlamanız önemlidir.
    • pro.StartInfo.Arguments satırında, SQL Server Express kurulumuna özel parametreler gönderilir. Bu parametreler, kurulumun sessiz modda (kullanıcıya herhangi bir soru sormadan) ve belirli ayarlarla yapılmasını sağlar. Bu parametreleri, kendi ihtiyaçlarınıza göre özelleştirebilirsiniz. Örneğin, farklı bir kurulum dizini belirtebilir veya farklı bileşenlerin kurulmasını sağlayabilirsiniz.
    • pro.WaitForExit() metodu, SQL Server kurulum işlemi tamamlanana kadar uygulamanın beklemesini sağlar. Bu, uygulamanın kurulum bitmeden çalışmaya başlamasını engeller.
  4. Uygulamayı Sonlandırma (Gerekirse):
    • Kullanıcı SQL Server Express'i kurmak istemezse, uygulama this.Close() metodu ile sonlandırılır.

Önemli Notlar:

  • Bu kod, SQL Server Express 64-bit sürümünü varsaymaktadır. Farklı bir sürüm kullanıyorsanız, hem dosya adını (SQLEXPR_x64_ENU.exe) hem de yukluozellikler kontrolündeki dizeyi ("SQLEXPR_x64_ENU") uygun şekilde değiştirmeniz gerekir.
  • Kurulum dosyasının (SQLEXPR_x64_ENU.exe) doğru konumda olduğundan emin olun. Bu dosyanın yolunu, uygulamanızın dağıtımına uygun şekilde ayarlamanız önemlidir.
  • Kayıt defterine erişim, yönetici ayrıcalıkları gerektirebilir. Uygulamanızın doğru çalışması için gerekli izinlere sahip olduğundan emin olun.
  • Bu kod, temel bir kontrol ve kurulum örneğidir. Gerçek bir uygulamada, daha kapsamlı hata yönetimi, loglama ve kullanıcı geri bildirimi mekanizmaları eklemeniz önerilir.
  • Bu kod Visual Studio 2010 ve .NET Framework 4.0 ile uyumludur. Daha yeni sürümlerde de benzer şekilde çalışacaktır, ancak bazı küçük değişiklikler gerekebilir.
  • Environment.SpecialFolder.MyDocuments yerine farklı bir klasör kullanabilirsiniz. Örneğin, uygulamanızın kurulu olduğu dizini veya geçici bir klasörü kullanabilirsiniz. Önemli olan, kurulum dosyasının bu konumda bulunmasıdır.

Bu makale umarım SQL Server kontrolü konusunda size yardımcı olmuştur. Webkolog'da bu ve benzeri konularda birçok faydalı bilgi bulabilirsiniz.

Webkolog'u takipte kalın!

Hepinize bol kodlu ve başarılı projeler dilerim!

0 yorum:

Yorum Gönder