SMO Server və Verilənlər Bazası xüsusiyyətlərini almaq
Salam dostlar. Yenidən aranızda ola bilmək(yeni məqalə yaza bilmək) xoşdur. Bu xoş hisslə keçən məqalədə söz verdiyim kimi smo və C# iş birliyi ilə Serverimizin və verilənlər bazalarının xüsusiyyətlərini sorğulayacaq və əldə edərək proqramızda görüntüləyəcəyik inşallah. Bu qədər məlumat yazdıqdan sonra tam sürət proqramımıza keçək.
Proqramımızın kod sətrilərinə keçməzdən əvvəl yeniliklər,əlavələr haqqında qısa məlumat üçün şəkillərə baxaq və əlavə olunanların siyahısı əldə edək.
İlk şəkildədən başa düşdüyünüz kimi bir ədəd class və bir ədəd windows from əlavə etmişəm. Artıq keçən məqalələrimizdəndə anladığınız kimi hər məqalədə hər yeni mövzu funkaiya üçün yeni bir class əlavə edirəm və bundan sonrakı məqalələrdə də eyni prinsiplə davam edəcəyəm. Bunu etməkdə iki məqsədim var (Siz özünə uyğun prinsip və ya alqoritmadan istifadə edə bilərsiniz). Birincisi kod çoxluğu, qarışıqlığı yaratmamaq və sorğuların oxuna bilməsini az da olsa asanlaşdırmaqdı. İkinci məqsədimsə class üzərində işləmə vərdişinizi artırmaq, classlar prinsipini tam olaraq anlamanızdır. Bunu sizə nə xeyri olacaq?: Class işləmək sizə gələcəkdə dll (şəxsi kitabxana)-lərini yaratmaqda çox köməklik edəcəkdir. Dll-lər bir class məhsuludur və bundan başqa dll tərkibində yazılan sorğular bəzi yerdə qismən və bəzi məqamlarda tamaiylə bu tip class yazılma prinsipi ilə eynidir ki, siz bu prinsipi daha yaxşı mənimsəsəniz dll yazmaq sizin üçün çox asan olacaqdır inşallah. Bu qədər açıqlamadan sonra proqramımızın dizaynını araşdırmağa davam edək.
İkinci şəkildə gördüyünüz kimi sql_managment formumuza sadəcə bir ədəd button əlavə etmişik.
Üçüncü şəklidə isə yeni formumuz və üzərindəki komponentlərdi(kontrollardı). Bir ədəd TabControl. TabControl-un Tabpage1-nə bir ədəd listbox, tabpage2-yə isəə iki ədəd groupbor və iki ədəd listbox əlavə etmişəm.
Proqramımızın dizaynı haqda tanışlıqdan sonra keçək kod sətirlərimizə və sorğularımızı yazaq.
Əvvələ əlavə etdiyimiz yeni class-ımızı açaraq altakı sorğuları yazaq:
using Microsoft.SqlServer.Management.Smo; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SMO_Nedir { public class Server_Db_Xussisyetleri { private Server srv; public Server Srv { get { return srv; } set { srv = value; } } public List<string> vb_ler = new List<string>(); public List<string> vb_xususiyyetleri = new List<string>(); public List<string> srv_xususiyyetleri = new List<string>(); #region --- Verilənlər bazalarını əldə etmək üçün gərəkli sorğumuzu aşağıdakı kimidir public void VerilenlerBazasinaBaglanti() { foreach (Database db in Srv.Databases) { vb_ler.Add(db.Name); } } #endregion #region --- Seçilmiş verilənlər bazasının xüsusiyyətlərini əldə etmək üçün aşağıdakı şəkildə sorğumuzu yazdıq public void VerilenlerBazasininMelumati(string Secilmis_Vb) { Database verilenler = srv.Databases[Secilmis_Vb.ToString()]; foreach (Property prop in verilenler.Properties) { vb_xususiyyetleri.Add(prop.Name + " - " + prop.Value); } } #endregion #region --- Sql Server xüsusiyyətlərini əldə edə bilmək üçün gərəkli sorğumuz public void Server_Melumatlari() { srv_xususiyyetleri.Add("Server: - " + srv.Name); srv_xususiyyetleri.Add("Versiya: - " + srv.Information.Edition); srv_xususiyyetleri.Add("Məlumat bazası sayı: - " + srv.Databases.Count); srv_xususiyyetleri.Add("İnstance adı: - " + srv.InstanceName); srv_xususiyyetleri.Add("Net Adı: - " + srv.NetName); srv_xususiyyetleri.Add("İ.S adı: - " + srv.Information.OSVersion); srv_xususiyyetleri.Add("Dil: - " + srv.Language); srv_xususiyyetleri.Add("Platforma: - " + srv.Information.Platform); srv_xususiyyetleri.Add("Məhsul səviyyəsi: - " + srv.Information.ProductLevel); srv_xususiyyetleri.Add("Versiya: - " + srv.Version + " " + srv.Information.VersionMajor + " " + srv.Information.VersionMinor); srv_xususiyyetleri.Add("Sistem nömrəsi: - " + srv.Information.BuildNumber); srv_xususiyyetleri.Add("Collaction: - " + srv.Information.Collation); srv_xususiyyetleri.Add("State: - " + srv.Information.State); } #endregion } }
Daha sonra isə yeni əlavə etdiyimiz Formumuzu açaraq sorğularımızı yazaq:
using Microsoft.SqlServer.Management.Smo; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace SMO_Nedir { public partial class Server_Database_Xususiyyetleri : Form { private Server srv; public Server Srv { get { return srv; } set { srv = value; } } public Server_Database_Xususiyyetleri() { InitializeComponent(); } Server_Db_Xussisyetleri srv_db = new Server_Db_Xussisyetleri(); private void Server_Database_Xususiyyetleri_Load(object sender, EventArgs e) { srv_db.Srv = srv; srv_db.Server_Melumatlari(); listBox1.Items.AddRange(srv_db.srv_xususiyyetleri.ToArray<string>()); srv_db.VerilenlerBazasinaBaglanti(); listBox3.Items.AddRange(srv_db.vb_ler.ToArray<string>()); } private void listBox3_SelectedIndexChanged(object sender, EventArgs e) { srv_db.Srv = srv; srv_db.VerilenlerBazasininMelumati(listBox3.SelectedItem.ToString()); listBox2.Items.AddRange(srv_db.vb_xususiyyetleri.ToArray<string>()); } } }
Son olaraq Sql_managment romumuzu açaraq yeni əlavə etdiyimiz Buttonun üzərində sıçanın sol düyməsini iki dəfə klikləyərək və ya Buttonun hadisələr bölməsindən OnClick hadisəsinə keçək və aşağıdakı sorğu ilə yeni formumuzu çağıraq:
private void btn_Srv_Db_Click(object sender, EventArgs e) { Server_Database_Xususiyyetleri srv_db = new Server_Database_Xususiyyetleri(); srv_db.Srv = srv; srv_db.MdiParent = this; srv_db.Show(); }
Daha bir məqaləməizin sonuna gəldik, test edərək alınan nəticəyə baxaq :). Növbəti məqalələrimizdə görüşənədək inşallah.
-
Yararlı olamsı ümüdü ilə….