الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

معرفة نسخ Sql Server التي تم تنصيبها

بدأه Mohammad Elsheimy في 11 يوليو 2009 · 3 رد · 707 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

قمت بكتابة هذا الدرس سابقا في موقعي
.

نظرة خاطفة

سوف نقوم في هذا الدرس بإذن الله تعالى شرح كيفية معرفة نسخ Instances

من SQL Server التي تم تنصيبها على هذا الجهاز أو حتى على جهاز آخر على الشبكة. سوف نقوم أولا بشرح الأدوات التي سنحتاج إليها في بيئة الدوت نت ثم سوف نقوم بشرح كيفية تنفيذ الفكرة.

مقدمة

قدمت لنا النسخة 2.0 من الـ .NET Framework إمكانية لمعرفة نسخ الـ SQL Server التي تم تنصيبها على الجهاز أو حتى على جهاز آخر على الشبكة. يمكنك تطبيق هذا عن طريق الكلاس System.Sql.SqlDataSourceEnumerator الموجودة في المكتبة System.Data.dll.

تعتبر هذه الكلاس كلاس وحيدة Singleton أي أنه لا يمكنك إنشاء نسخة منها ولكن يمكنك الحصول على نسخة منها عن طريق الخاصية Instance الموجودة في هذه الكلاس. بمعنى آخر أنه هناك نسخة واحدة التي يمكنك التعامل معها وهي يمكنك الحصول عليها عن طريق SqlDataSourceEnumerator.Instance ولا يمكنك إنشاء نسخ منها عن طريق المعامل New.

بعد حصولك على النسخة الوحيدة للكلاس SqlDataSourceEnumerator عن طريق الخاصية الثابتة Instance يمكنك الحصول على بيانات نسخ SQL Server التي تم تنصيبها عن طريق الدالة GetDataSources().

تقوم هذه الدالة بإرجاع عنصر جدول من نوع System.Data.DataTable. يحتوي هذا الجدول على صفوف تمثل النسخ المنصبة. كما يحتوي على أربعة أعمدة تمثل بيانات هذه النسخ:

  • ServerName:
    اسم السيرفر وهو اسم الجهاز المنصب عليه هذه النسخة.
  • InstanceName:
    وهو اسم النسخة على سبيل المثال SQLEXPRESS أو MSSQLSERVER.
  • IsClustered:
    هل هذه النسخة Clustered أم لا. قم بزيارة MSDN لمعرفة المزيد من المعلومات عن SQL Server Clustered Instances.
  • Version:
    إصدار هذه النسخة لـ SQL Server. SQL Server 2005 على سبيل المثال له الإصدار 9.x.x.x.

التطبيق

الكود التالي هو كود Console Application يقوم باستعراض نسخ SQL Server المنصبة:

لا تنسى إضافة جملة using في C# أو Imports في VB.NET للـ Namespaces System.Data و System.Data.Sql. وأيضا لا تنسى إضافة المكتبة System.Data.dll إلى References الخاصة بالمشروع.

// C# Code
   static void Main()
   {
	   DataTable table = SqlDataSourceEnumerator.Instance.GetDataSources();

	   DisplayTable(table);
   }

   private static void DisplayTable(DataTable table)
   {
	   foreach (DataRow row in table.Rows)
	   {
		   foreach (DataColumn col in table.Columns)
			   Console.WriteLine("{0} = {1}", col.ColumnName, row[col]);
		   Console.WriteLine(new string('-', 30));
	   }
   } 
   -------------------------------

   ' VB.NET Code
   Sub Main()
	   Dim table As DataTable = SqlDataSourceEnumerator.Instance.GetDataSources()

	   DisplayTable(table)
   End Sub

   Sub DisplayTable(ByVal table As DataTable)
	   For Each row As DataRow In table.Rows
		   For Each col As DataColumn In table.Columns
			   Console.WriteLine("{0} = {1}", col.ColumnName, row(col))
			  Console.WriteLine(New String(" "c, 30))
		   Next
	   Next
   End Sub

إذا كان هناك Firewall منصب على جهازك ربما تظهر لك رسالة تطلب منك منح الكود الصلاحيات المناسبة.

لاحظ أن الدالة GetDataSources() تطلب أن يكون الكود الخاص بك حاصل على صلاحيات FullTrust. في الغالب سوف يكون الكود الخاص بك حاصل على هذه الصلاحيات.

ربما لن تظهر أسماء جميع النسخ وربما أيضا لن تظهر اسم أي نسخة وربما أيضا أن تختلف النسخ التي تظهر لك في كل مرة نداء على الدالة GetDataSources() وخاصة إذا كانت نسخ على أجهزة أخرى على الشبكة وذلك بسبب طبيعة عمل هذه الدالة.

خاتمة

تعلمنا في هذا الدرس كيفية الحصول على معلومات حول النسخ المنصبة من SQL Server. يمكنك استخدام هذه الطريقة في حالة أنك تريد أن يقوم المستخدم بتحديد مكان قاعدة البيانات التي يريد استخدامها وبهذا توفر طريقة أبسط للمستخدم أثناء تعامله مع برنامجك.

تم تعديل هذه المشاركة بواسطة Mohammad Elsheimy في 11 يوليو 2009 في 14:21

#2

مشكور درس حلو

FOTA KHader FAR

سوف اتجة الى عالم الويب

thumb_kujviv1t1.jpg

#3

السلام عليكم

بارك الله فيك اخى معلومات جديدة بالنسبة لى وهذا اول مرة ارى فيها هذا الكلاس الذى يستخدم Instance وبالفعل جارى تجربته

وحسب ما رأيت منتظرين منك المزيد من هذه الدروس التى مهما ذكرنا فيك من كلمات شكر لن نوفيك حقك ولذلك تركنا شكرك وجزاءك على القدير عز وجل فاليجزيك الله عنا خير الجزاء والله مستعان

#4

شكرا جزيلا لكم

مواضيع مشابهة