تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
الغزل مع SQL Server
#7
إنشاء قاعدة بيانات باستخدام 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

نعود لموضوعنا .
نحتاج لبعض الادوات كما بالصورة

  1. Button نسميه Button1  نستخدمه لانشاء القاعدة
  2. Button نسميه DbBros  نستخدمه لاستعراض مكان التخزين
  3. TextBox نسميه txtdbname نستخدمه لاعطاء اسم للقاعدة
  4. 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
سيكون انشائها عن طريق السكربت كما اسلفنا سابقاً.


الملفات المرفقة
.rar   Northwind.rar (الحجم : 822 بايت / التحميلات : 236)
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}


الردود في هذا الموضوع
الغزل مع SQL Server - بواسطة nonoms - 25-03-14, 12:37 PM
RE: الغزل مع SQL Server - بواسطة nonoms - 25-03-14, 04:19 PM
RE: الغزل مع SQL Server - بواسطة Sajad - 25-03-14, 07:59 PM
RE: الغزل مع SQL Server - بواسطة ابو ابراهيم - 26-03-14, 06:13 AM
RE: الغزل مع SQL Server - بواسطة nonoms - 26-03-14, 05:32 PM
RE: الغزل مع SQL Server - بواسطة nonoms - 05-04-14, 01:31 AM
RE: الغزل مع SQL Server - بواسطة nonoms - 05-04-14, 04:49 AM
RE: الغزل مع SQL Server - بواسطة Sajad - 05-04-14, 10:48 AM
RE: الغزل مع SQL Server - بواسطة a_almisery - 05-04-14, 02:29 PM
RE: الغزل مع SQL Server - بواسطة مالكـ - 05-04-14, 04:25 PM
RE: الغزل مع SQL Server - بواسطة nonoms - 07-04-14, 05:13 AM
RE: الغزل مع SQL Server - بواسطة T.ALKATHIRI - 09-05-14, 04:20 AM
RE: الغزل مع SQL Server - بواسطة nonoms - 12-05-14, 12:14 AM
RE: الغزل مع SQL Server - بواسطة Omar Mekkawy - 05-06-14, 10:00 PM
RE: الغزل مع SQL Server - بواسطة Omar Mekkawy - 06-06-14, 01:12 PM
RE: الغزل مع SQL Server - بواسطة KH_Alaswad - 12-04-18, 12:47 PM
RE: الغزل مع SQL Server - بواسطة atefkhalf2004 - 07-06-19, 04:03 PM
RE: الغزل مع SQL Server - بواسطة elgokr - 08-06-19, 05:09 PM
RE: الغزل مع SQL Server - بواسطة atefkhalf2004 - 08-06-19, 09:59 PM
RE: الغزل مع SQL Server - بواسطة ابو ليلى - 09-06-19, 09:19 PM
RE: الغزل مع SQL Server - بواسطة atefkhalf2004 - 09-06-19, 10:18 PM
RE: الغزل مع SQL Server - بواسطة ابو ليلى - 10-06-19, 12:38 AM
RE: الغزل مع SQL Server - بواسطة asemshahen5 - 10-06-19, 01:55 PM
RE: الغزل مع SQL Server - بواسطة atefkhalf2004 - 10-06-19, 09:01 PM
RE: الغزل مع SQL Server - بواسطة Abdo hamed - 28-03-20, 09:38 PM


التنقل السريع :


يقوم بقرائة الموضوع: