إنشاء قاعدة بيانات باستخدام SQLSMO
كنت قد اشرت سابقا في بداية الموضوع عن طريق انشاء قواعد البيانات و كائناتها عن طريق SCRIPT الذي يولده
SqlServer لكل كائنات قاعدة البيانات و حتى قاعدة البيانات نفسها .
الكثير من المبرمجين يستخدمون بيئة Power Shell وهو برنامج محمل بشكل افتراضي ضمن نظام التشغيل Windows 7
و كذلك ضمن Windows Server 2008 R2 , النسخة الموجودة هي PowerShell 2.0 ويمكنك الحصول على النسخة الثالثة
من هذا الرابط .
http://msdn.microsoft.com/en-us/library/hh847837.aspx
هو برنامج شبيه بمحرر الدوس الافتراضي الموجود مع الوندوز , لكن هذا الاخير مبني بشكل كامل على بيئة NET Framework common language runtime CLR
على كل الاحوال لست بصدد شرحه هنا يمكنك الاطلاع على معلومات اكثر عنه في الرابط التالي.
http://technet.microsoft.com/en-us/libra...57337.aspx
او يمكنك استخدام SqlServer لتنفيذ السكربتات الخاصة بك.
ساشرح طريقة إنشاء سكربت و كذلك تنفيذ سكربت عن طريق SqlServer بشكل مبسط
فهدفي ليس استخدام SqlServer بل استخدام بيئة .Net
نتابع وفق الصورة :
كما ترى يمكنك الاطلاع على بنية السكربت الخاص بانشاء اي كائن (قاعدة او جدول او ... )
و يمكنك كذلك تخزينها في ملفات كما تريد لا ستخدامها لاحقا.
ملفات السكربت تحمل اللاحقة *.sql و شكلها كما بالصورة.
لدي ملف سكربت لقاعدة بيانات NorthWind المشهورة و هي غير موجودة بشكل افتراضي مع
SqlServer 2008 R2 .
ساقوم بتنفيذ السكربت من داخل SqlServer .
كل ما علي فعله هو فتح الملف ثم تنفيذ السكربت و ها هي القاعدة اصبحت لدينا.
مرفق ملف السكربت الخاص بــ NorthWind
إنشاء قاعدة بيانات باستخدام SQLSMO
نعود لموضوعنا .
نحتاج لبعض الادوات كما بالصورة
كما فعلنا سابقا سيكون لدينا كائن FolderBrowserDialog لتحديد مكان التخزين.
و سنحتفظ كذلك بمسار التخزين في اعدادات البرنامج كما فعلنا سابقا.
بالرجوع الى الصورة السابقة.
سنعرف متغير جديد من النوع النصي نسميه BrowseDb
مهمته هو تخزين مسار المستعرض الخاص بانشاء القواعد.
الان نضيف كائن FolderBrowserDialog من صندوق الادوات كما فعلنا سابقاً.
و من ثم في حدث الضغط على DbBros نحدد مسار حفظ القاعدة كما يلي:
بعد تحديد المسار بقي لدينا إعطاء بعض المعلومات الخاصة بالقاعدة
اسم القاعدة و اسم السيرفر
ملفي القاعدة و المخطط FileGroups (Mdf,Ldf)
و كذلك تحديد حجم القاعدة.
ثم انشاء القاعدة
في حدث الضغط على الزر Button1
هكذا نكون اصبحنا قادرين على انشاء قواعد بيانات .
طبعا قواعد البيانات هذه فارغة لا تحتوي على كائنات مثل الجداول و غيرها.
لن اناقش طريقة انشاء الكائنات الاخرى باستخدام كائن SQLSMO
سيكون انشائها عن طريق السكربت كما اسلفنا سابقاً.
كنت قد اشرت سابقا في بداية الموضوع عن طريق انشاء قواعد البيانات و كائناتها عن طريق SCRIPT الذي يولده
SqlServer لكل كائنات قاعدة البيانات و حتى قاعدة البيانات نفسها .
الكثير من المبرمجين يستخدمون بيئة Power Shell وهو برنامج محمل بشكل افتراضي ضمن نظام التشغيل Windows 7
و كذلك ضمن Windows Server 2008 R2 , النسخة الموجودة هي PowerShell 2.0 ويمكنك الحصول على النسخة الثالثة
من هذا الرابط .
http://msdn.microsoft.com/en-us/library/hh847837.aspx
هو برنامج شبيه بمحرر الدوس الافتراضي الموجود مع الوندوز , لكن هذا الاخير مبني بشكل كامل على بيئة NET Framework common language runtime CLR
على كل الاحوال لست بصدد شرحه هنا يمكنك الاطلاع على معلومات اكثر عنه في الرابط التالي.
http://technet.microsoft.com/en-us/libra...57337.aspx
او يمكنك استخدام SqlServer لتنفيذ السكربتات الخاصة بك.
ساشرح طريقة إنشاء سكربت و كذلك تنفيذ سكربت عن طريق SqlServer بشكل مبسط
فهدفي ليس استخدام SqlServer بل استخدام بيئة .Net
نتابع وفق الصورة :
كما ترى يمكنك الاطلاع على بنية السكربت الخاص بانشاء اي كائن (قاعدة او جدول او ... )
و يمكنك كذلك تخزينها في ملفات كما تريد لا ستخدامها لاحقا.
ملفات السكربت تحمل اللاحقة *.sql و شكلها كما بالصورة.
لدي ملف سكربت لقاعدة بيانات NorthWind المشهورة و هي غير موجودة بشكل افتراضي مع
SqlServer 2008 R2 .
ساقوم بتنفيذ السكربت من داخل SqlServer .
كل ما علي فعله هو فتح الملف ثم تنفيذ السكربت و ها هي القاعدة اصبحت لدينا.
مرفق ملف السكربت الخاص بــ NorthWind
إنشاء قاعدة بيانات باستخدام SQLSMO
نعود لموضوعنا .
نحتاج لبعض الادوات كما بالصورة
- Button نسميه Button1 نستخدمه لانشاء القاعدة
- Button نسميه DbBros نستخدمه لاستعراض مكان التخزين
- TextBox نسميه txtdbname نستخدمه لاعطاء اسم للقاعدة
- TextBox نسميه txtDbPath نستخدمه لعرض المسار
كما فعلنا سابقا سيكون لدينا كائن FolderBrowserDialog لتحديد مكان التخزين.
و سنحتفظ كذلك بمسار التخزين في اعدادات البرنامج كما فعلنا سابقا.
بالرجوع الى الصورة السابقة.
سنعرف متغير جديد من النوع النصي نسميه BrowseDb
مهمته هو تخزين مسار المستعرض الخاص بانشاء القواعد.
الان نضيف كائن FolderBrowserDialog من صندوق الادوات كما فعلنا سابقاً.
و من ثم في حدث الضغط على DbBros نحدد مسار حفظ القاعدة كما يلي:
كود :
Private Sub DbBros_Click(sender As System.Object, e As System.EventArgs) Handles DbBros.Click
FolderDbBros.ShowDialog()
If Windows.Forms.DialogResult.Yes = Windows.Forms.DialogResult.Yes Then
txtDbPath.Text = FolderDbBros.SelectedPath
My.Settings.BrowseDb = FolderDbBros.SelectedPath
My.Settings.Save()
End If
End Subبعد تحديد المسار بقي لدينا إعطاء بعض المعلومات الخاصة بالقاعدة
اسم القاعدة و اسم السيرفر
ملفي القاعدة و المخطط FileGroups (Mdf,Ldf)
و كذلك تحديد حجم القاعدة.
ثم انشاء القاعدة
في حدث الضغط على الزر Button1
كود :
'انشاء قاعدة بيانات
If txtdbname.Text = "" Then
MessageBox.Show("يرجى تحديد اسم لقاعدة البيانات", "إنشاء قاعدة بيانات", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
txtdbname.Focus()
Exit Sub
Else
Try
If MessageBox.Show(" سيتم انشاء قاعدة بيانات " & vbCrLf & FolderDbBros.SelectedPath & " في المسار ", "إنشاء قاعدة بيانات", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2, MessageBoxOptions.RightAlign) = Windows.Forms.DialogResult.Yes Then
Dim database As New Database(srv, Trim(txtdbname.Text))
database.FileGroups.Add(New FileGroup(database, "PRIMARY"))
Dim dtPrimary As New DataFile(database.FileGroups("PRIMARY"), Trim(txtdbname.Text), FolderDbBros.SelectedPath & "\" & Trim(txtdbname.Text) & ".mdf") ' "E:\Data\MyNewDatabase1.mdf")
dtPrimary.Size = 77.0 * 1024.0
dtPrimary.GrowthType = FileGrowthType.KB
dtPrimary.Growth = 1.0 * 1024.0
database.FileGroups("PRIMARY").Files.Add(dtPrimary)
Dim logFile As New LogFile(database, "Log", FolderDbBros.SelectedPath & "\" & Trim(txtdbname.Text) & ".ldf")
logFile.Size = 7.0 * 1024.0
logFile.GrowthType = FileGrowthType.Percent
logFile.Growth = 10.0
database.LogFiles.Add(logFile)
database.Create()
database.Refresh()
MessageBox.Show("تمت العملية", "إنشاء قاعدة بيانات", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
LstDbs.Items.Clear()
For Each db As Database In srv.Databases
LstDbs.Items.Add(db.Name)
Next
End If
Catch ox As SmoException
MsgBox(ox.Message.ToString)
Catch ex As Exception
MsgBox(ex.Message.ToString)
Finally
If srv.ConnectionContext.IsOpen Then
srv.ConnectionContext.Disconnect()
End If
End Try
End If
End Subهكذا نكون اصبحنا قادرين على انشاء قواعد بيانات .
طبعا قواعد البيانات هذه فارغة لا تحتوي على كائنات مثل الجداول و غيرها.
لن اناقش طريقة انشاء الكائنات الاخرى باستخدام كائن SQLSMO
سيكون انشائها عن طريق السكربت كما اسلفنا سابقاً.
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال


