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

عمل Backup and Restore لقاعدة بيانات SQL Server

مغلق
بدأه Ammar Gaffar في 13 ديسمبر 2004 · 13 رد · 2,585 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف يمكنني ان اقوم بعمل Backup and Restore Data لقاعدة بيانات تعمل علي SQL Server من خلال نموذج بال VB.NET وماهي الشفرة اللازمة

هل هنالك دوال API أو دوال يدعمها محرك تشغيل ال SQL Server لعمل ذلك

الرجاء ارفاق مثال اذا وجد

والله الموفق

#2

أنا لا أعلم سبب طلبك لهذا الأمر، ف SQL Server على ما أعتقد يأتي مع نظام خاص لعملية ال Backup، ولكن بالطبع يجب أن يكون عندك ال Enterprise Manager أو نسخة كاملة من السيرفر...

أما إن أردت أن تقوم بذلك مباشرة عن طريق كود نيت، فللأسف لا أعلم إن كان هناك طريقة مباشرة للقيام بذلك، أقصد عن طريق كود قصير توفره كلاس في النت ولا أظنها موجودة.

لو كانت الداتابيز هي للأكسس لكان بالإمكان التعامل معها كفايل عادي ونسخه، ولكن الأمر صعب مع ال Sql Server كما تعلم... هل يمكن مثلاً عمل نسخة من الداتاسيت على أن تكون هي الداتابيز كاملة (أي إختيار جميع الجدوال و أعمدتها لتكون في الداتاسيت) ومن ثم نقوم بحفظ تلك الداتاسيت على شكل XML، أجزم بأن الأمر ممكن (نظرياً، فأنا لم أجرب القيام بذلك)، ولو أردت أن تقوم بذلك فإنه سيصبح عندك برنامج ضخم سيدر عليك دخلاً كبقية برامج ال Backup الموجودة في السوق.

آسف لعدم إجابتي الشافية.

Learn Japanese :>>> http://www.nouben.com/

#3

هذا الكود يعمل مع ال sql server ,لست ادري ان كان يعمل مع ال MSDE لكن الشيء المهم هو ضرورة وجود ال sqldmo.dll وهي تاتي مع السيرفر ويمكنك تسجيلها عن طريق :regsvr32 sqldmo.dll

الان من الاستيديو:

Project->Add Reference اختر COM ثم ابحث عن Microsoft SQLDMO Object Library او ابحث عن sqldmo.dll واخترها

اكتب الان كود الBackup:

ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim svr As New SQLDMO.SQLServerClass()
        svr.Connect("server", "username", "password")
        Dim bkp As New SQLDMO.BackupClass()
        bkp.Devices = bkp.Files
        bkp.Files = "c:\mm.bak"
        bkp.Database = "yourdatabase"
        bkp.SQLBackup(svr)
        MessageBox.Show("backup done")
        bkp = Nothing
        svr.DisConnect()
        svr = Nothing

    End Sub

غير معطيات الدخول الى السيرفر لتوافق ما لديك.

كود الRestore:

  Dim svr As New SQLDMO.SQLServerClass()
        svr.Connect("server", "username", "password")
        Dim res As New SQLDMO.RestoreClass()
        res.Devices = res.Files
        res.Files = "e:\mm.bak"
        res.Database = "yourdatabase"
        res.ReplaceDatabase = True
        res.SQLRestore(svr)
        MessageBox.Show("restore success")
        res = Nothing
        svr.DisConnect()
        svr = Nothing

الملف mm.bak هو الملف الذي يحفظ فيه الbackup وتستطيع تغييره الى اسم اخر.

منقول

كاتب الدرس الاستاذ مدني Madini

#4

السلام عليكم

اخى ماجد كيف حالك

الكود لم يعمل معى ممكن تضيف المثال اذا كان يعمل معك

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

برنامج الخبير لنقاط البيع المباشرة

#5

السلام عليكم

سوف أعرض عليكم فكره قمت بعملها بالفعل في أحد برامجي عندما واجهت تلك المشكله

و الفكره كالتالي

قمت بنسخ كل جدول من قاعدة البيانات إلى ملف XML و لم أقم بنسخ جميع الجداول لتجنب التعقييد

و بعدها عندما أرييد إستعادة تلك الجداول

أقوم بتحمييل تلك الملفات إلى قاعدة البيانات

هذه هي الفكره ببساطه شديده

#6

حلوة فكرتك يا khabini.com لأنها تنفع مع اي قاعدة بيانات بس عيبها انها مش هتنفع مع القواعد الضخمة,,

اقتباس
الـ VB هى الأساس ... بتبرمج بيها بالاحساس

ولا سيمي كولن ولا أقواس ... وتعلمها سهل لكل الناس

راكب فيها موتور نفاث ... دي سريعه جدا وباخلاص

الـ VB هى التراث ... للذكور والايناث :D

الـ VB لغة عريقه ... حتى اسأل Anwarica

من ديوان الشاعر السي شاربي "معتز شمس"
#7

وكذلك الإستعانة بمكتبة sqldmo.dll لها نفس العيب فالطريقتين تعملان على عمل Backup لكامل الداتابيتز وهنا يبقى لطريقة الأخ khabini.com الأفضلية لعدم إعتمادها على أي مكتبة.... أليس كذلك؟؟؟ وفوق ذلك، صحيح أن ال Backup الكامل يأخذ وقتاً بالمقارنة مع differential و incremental ولكن له ميزة أنك عندما تعمل Restore فإن الوقت المستغرق أقل من النوعين الآخرين بدرجات كبيرة.

أرجو أن ينفع مع الأخ السائل هذا المثال في GetDotNet، فكما يبدو من وصفه في الصفحة (لم أجربه شخصياً) فهو يجيب تماماً على سؤال الأخ السائل:

databackup - Backup and restore Ms Sql Server databases

Learn Japanese :>>> http://www.nouben.com/

#8

السلام عليكم

يا جماعه أرجوا التوضيح لماذا لا تنفع مع قواعد البيانات الكبيره

أنا قلت كل جدول أعمله ملف XML

كما أن ملفات الXML ملفات نصيه يعني مساحتها أكييد صغيره

#9

أخي khabini.com،

ما تفضل به الأخ Unod سليم، فقطعاً العملية لا تنفع مع الداتابيز الكبيرة، ونحن عندما نقول "كبيره" يمكن أن نكون نتحدث عن غيغابايتات... هل تعلم كم من الوقت ستسغرقة عمليتك لو كانت الداتابيز مثلاً 3 غيغا؟؟؟ والرقم 3 هو رقم يمكن أن يكون متواضع في عالم الشركات.... قد تقول بأن "ليس من مشكلة، حتى ولو إستغرق الأمر يوماً كاملاً"، ولكن يجب أن تعلم بأن يجب أن تعمل Freeze لإستخدام السيرفر وتمنع الدخول عليه حتى يكون عندك نقطة Restore Point بتاريخ (ساعة، ثانية) محددة لأنه الداتابيز بالضرورة يوجد بين جداولها روابط، فماذا لو أن الداتابيتز هي لبنك من البنوك ويجب أن تقوم بعملية Backup كل ثلاث ساعات مثلاً... هذه فقط جانب من عقم طريق حفظ الداتابيز بأكملها، جانب واحد ويوجد أسباب كثيرة بعضها يخطر على بالي وبعضها لا يخطر.

لهذا السبب يوجد برامج خاصة لعملية ال Backup وهي برامج ثمينة، برامج تقوم بعملية Backup فقط للأجزاء التي تغيرت من الداتابيز، وهي برامج تفوقت على وسائل ال Backup التي تأتي عادة مع ال Oracle وال Sql Server...

Learn Japanese :>>> http://www.nouben.com/

#10

السلام عليكم ورحمة الله وبركاته

جزاكم الله اخى HMS ولكن البرنامج معمول c# وانا لا اجيد التعامل مع c#

فهل يوجد مثال اخر فجول بيسك

وجزاكم الله خيرا على المساعدة

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

برنامج الخبير لنقاط البيع المباشرة

#11

يرجى من احد الأخوان أن يقوم بتحويل الملف المذكور الى بيسك.

ها هما مثلان أيضاً بالبيسك، وهما من نفس الموقع أعلاه ،فيهما خصائص ال Backup وال Restore، مؤلف المثال الأول يقول بأن جزء المتعلق بال Backup لا زال تحت العمل، يمكنكم الإطلاع على الكود وأخذ الفكرة فقط وعمل برنامج شبيه:

GotDotNet User Sample: SQL Scripts

GotDotNet User Sample: DB Helper Update

Learn Japanese :>>> http://www.nouben.com/

#12

طيب و الله فكره

سأحاول تنفيذها و هي عمل Backup للأجزاء التي تغيرت فقط سأفكر بالأمر و أحاول معه و إن نجح سأقول لكم إن شاء الله

#13

ماذا عن استخدام ال Replication

ما هو ال replication, Database replication

و تستخدام الاجراءات المخزنه الخاصه بال Replication

System Stored Procedures (T-SQL)

فقط ابحث داخل الرابط العلوى عن Replication Procedures

ايضاً استخدام ال SQL DMO

SQL-DMO Replication Objects

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 20 ديسمبر 2004 في 04:26

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#14

اسف يا شباب اخطأت فى ردى السابق و لم اشأ تعديله

اقتباس
سأحاول تنفيذها و هي عمل Backup للأجزاء التي تغيرت فقط

بسيطه يبدو ان نوبة غباء مؤقته اصابتنى

استخدم ال Differential Backup

اقتباس
A differential database backup only backs up data changes that have been made to the database since the last full database backup

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

هذا الموضوع مغلق.

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