SQL Server’ın versiyon bilgilerine ‘registry’ sayesinde kolayca ulaşabiliyoruz. SQL Server’ların çalışıyor olması ya da herhangi bir database’e bağlantı yapmadan küçük bir kaç kod ile kolayca göstermeye çalışacağım. Bunun için öncelikle registry’daki SQL Server için olan ağaç yapısını anlamak gerekli.

İlk kurulumda, SQL Server KEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\CurrentVersion key’i altına CurrentVersion isminde mevcut versiyonu yazıyor.

Aynı makinaya başka bir SQL Server kurmak istediğimizde Instance olarak kuracak ve bunuda HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server altına koyacaktır. Mesela SQL2000 isminde bir instance kuracak olursanız, bu register’da HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\SQL2000 şeklinde yer alacaktır.

Aynı şekilde versiyon bilgileri de HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\SQL2000\MSSQLServer\CurrentVersion altında yer alacaktır.

Artık tek yapmamız gereken registry’den bu bilgileri çekmek.Aşağıdaki kod örneği ile bunu kolayca yapabilirsiniz.Güle güle kullanın…

            RegistryKey rk = Registry.LocalMachine.OpenSubKey(@”SOFTWARE\Microsoft\Microsoft SQL Server”);
            String[] instances = (String[])rk.GetValue(“InstalledInstances”);
            if (instances.Length > 0)
            {
                foreach (String element in instances)
                {
                    if (element == “MSSQLSERVER”)
                    {
                        Console.WriteLine(System.Environment.MachineName);
                        rk = Registry.LocalMachine.OpenSubKey(@”SOFTWARE\Microsoft\MSSQLServer”);
                        RegistryKey s = rk.OpenSubKey(“MSSQLSERVER”);
                        Console.WriteLine(“Version:” + s.OpenSubKey(“CurrentVersion”).GetValue(“CurrentVersion”));
                        Console.WriteLine(“Service Pack:” + s.OpenSubKey(“CurrentVersion”).GetValue(“CSDVersion”));

                    }
                    else
                    {
                        Console.WriteLine(System.Environment.MachineName + @”\” + element);
                        rk = Registry.LocalMachine.OpenSubKey(@”SOFTWARE\Microsoft\Microsoft SQL Server”);
                        Console.WriteLine(“Version:” + rk.OpenSubKey(element).OpenSubKey(“MSSQLSERVER”).OpenSubKey(“CurrentVersion”).GetValue(“CurrentVersion”));
                        Console.WriteLine(“Service Pack:” + rk.OpenSubKey(element).OpenSubKey(“MSSQLSERVER”).OpenSubKey(“CurrentVersion”).GetValue(“CSDVersion”));
                    }
                   
                }
            }