نظرة خاطفة
سوف نقوم في هذا الدرس بإذن الله تعالى شرح كيفية معرفة نسخ 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 المنصبة:
// 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
خاتمة
تعلمنا في هذا الدرس كيفية الحصول على معلومات حول النسخ المنصبة من SQL Server. يمكنك استخدام هذه الطريقة في حالة أنك تريد أن يقوم المستخدم بتحديد مكان قاعدة البيانات التي يريد استخدامها وبهذا توفر طريقة أبسط للمستخدم أثناء تعامله مع برنامجك.