منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : مشروع النسخ الاحتياطي sqllite
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
أهمية النسخ الاحتياطي:
حماية البيانات: يساعد النسخ الاحتياطي على حماية البيانات من خطر الفقدان بسبب عوامل مثل الأعطال التقنية، الفيروسات، أو أخطاء المستخدمين.

الاستعادة بسرعة: يمكن لبرامج النسخ الاحتياطي استعادة البيانات بسرعة في حالات الطوارئ، مما يقلل من التأثيرات السلبية على الأعمال والعمليات.

الامتثال والتنظيم: يساعد الاحتفاظ بنسخ احتياطية من البيانات في الامتثال للمعايير والتشريعات القانونية التي تتطلب الاحتفاظ بنسخ احتياطية من البيانات لفترات زمنية معينة.

تم انشاء هذا المشروع بدون استخدام المكتبة الخاصة تم اضافة ملفات DLL كاملة  يمكنك تجربته على اي جهاز تريد
(24-06-24, 08:17 PM)Kamil كتب : [ -> ]أهمية النسخ الاحتياطي:
حماية البيانات: يساعد النسخ الاحتياطي على حماية البيانات من خطر الفقدان بسبب عوامل مثل الأعطال التقنية، الفيروسات، أو أخطاء المستخدمين.

الاستعادة بسرعة: يمكن لبرامج النسخ الاحتياطي استعادة البيانات بسرعة في حالات الطوارئ، مما يقلل من التأثيرات السلبية على الأعمال والعمليات.

الامتثال والتنظيم: يساعد الاحتفاظ بنسخ احتياطية من البيانات في الامتثال للمعايير والتشريعات القانونية التي تتطلب الاحتفاظ بنسخ احتياطية من البيانات لفترات زمنية معينة.

تم انشاء هذا المشروع بدون استخدام المكتبة الخاصة تم اضافة ملفات DLL كاملة  يمكنك تجربته على اي جهاز تريد

الروابط لا تعمل
لماذا لا ترفع الملفات هنا مباشرة ؟ Huh
(06-07-24, 12:43 PM)salamandal كتب : [ -> ]
(24-06-24, 08:17 PM)Kamil كتب : [ -> ]أهمية النسخ الاحتياطي:
حماية البيانات: يساعد النسخ الاحتياطي على حماية البيانات من خطر الفقدان بسبب عوامل مثل الأعطال التقنية، الفيروسات، أو أخطاء المستخدمين.

الاستعادة بسرعة: يمكن لبرامج النسخ الاحتياطي استعادة البيانات بسرعة في حالات الطوارئ، مما يقلل من التأثيرات السلبية على الأعمال والعمليات.

الامتثال والتنظيم: يساعد الاحتفاظ بنسخ احتياطية من البيانات في الامتثال للمعايير والتشريعات القانونية التي تتطلب الاحتفاظ بنسخ احتياطية من البيانات لفترات زمنية معينة.

تم انشاء هذا المشروع بدون استخدام المكتبة الخاصة تم اضافة ملفات DLL كاملة  يمكنك تجربته على اي جهاز تريد

الروابط لا تعمل
لماذا لا ترفع الملفات هنا مباشرة ؟ Huh
(07-07-24, 04:43 PM)Zuhare كتب : [ -> ]
(06-07-24, 12:43 PM)salamandal كتب : [ -> ]
(24-06-24, 08:17 PM)Kamil كتب : [ -> ]أهمية النسخ الاحتياطي:
حماية البيانات: يساعد النسخ الاحتياطي على حماية البيانات من خطر الفقدان بسبب عوامل مثل الأعطال التقنية، الفيروسات، أو أخطاء المستخدمين.

الاستعادة بسرعة: يمكن لبرامج النسخ الاحتياطي استعادة البيانات بسرعة في حالات الطوارئ، مما يقلل من التأثيرات السلبية على الأعمال والعمليات.

الامتثال والتنظيم: يساعد الاحتفاظ بنسخ احتياطية من البيانات في الامتثال للمعايير والتشريعات القانونية التي تتطلب الاحتفاظ بنسخ احتياطية من البيانات لفترات زمنية معينة.

تم انشاء هذا المشروع بدون استخدام المكتبة الخاصة تم اضافة ملفات DLL كاملة  يمكنك تجربته على اي جهاز تريد

الروابط لا تعمل
لماذا لا ترفع الملفات هنا مباشرة ؟ Huh
شكرا لك يا اخي
في الـ SQLite   النسخ الاحتياطي من ضمن أكواد الكائن نفسه أو ضمن عمل نسخة أخرى من خلال النسخ واللصق  هي ليست بذات الجدوى المرجوة منها..
وذلك لأنه :
- عندما تضيف أي بيانات إلى أي قاعدة بيانات : فإنه حتماً سيزداد حجم قاعدة الباينات (وهذا معروف للكل).
- لكن عند مسح أي بيانات : تبقى قاعدة البيانات بنفس الحجم ولا ينخفض حجمها بحجم الداتا الممسوحة منها.

- هنا يأتي دور النسخ الاحتياطي الأساسي : حيث أنه ينسخ البيانات الموجودة فقط، ويتجاهل ما تم مسحه، 
بالتالي يعطي حجم داتا حقيقي.

- هناك ببعض قواعد البيانات مثل الاكسس مثلاً ميزة ضغط وإصلاح قاعدة البيانات : بالتالي يتخلص من الحجوم الظاهرة والغير مستخدمة.
- لكن هذه الميزة غير موجودة في SQLite .

- بالتالي الحل الأمثل لها لتستفيد من عمل نسخة إحتياطي فعليه هو :
أن تنشئ فعلياً قاعدة بيانات لها نفس جداول القاعدة الأساسية.
ثم من خلال أكواد الـ SQL  أن تعمل نسخ بيانات من كل جدول في القاعدة الأساسية  إلى  الجدول المقابل له في القاعدة الإحتياطية.

ومن سلبية هذا الأمر أنه يأخذ وقت فعلي بحجم البيانات، 
ولكن الميزة تظهر في النهاية أنه يعطي قاعدة بيانات حقيقة الحجم..
(07-07-24, 08:14 PM)Taha Okla كتب : [ -> ]في الـ SQLite   النسخ الاحتياطي من ضمن أكواد الكائن نفسه أو ضمن عمل نسخة أخرى من خلال النسخ واللصق  هي ليست بذات الجدوى المرجوة منها..
وذلك لأنه :
- عندما تضيف أي بيانات إلى أي قاعدة بيانات : فإنه حتماً سيزداد حجم قاعدة الباينات (وهذا معروف للكل).
- لكن عند مسح أي بيانات : تبقى قاعدة البيانات بنفس الحجم ولا ينخفض حجمها بحجم الداتا الممسوحة منها.

- هنا يأتي دور النسخ الاحتياطي الأساسي : حيث أنه ينسخ البيانات الموجودة فقط، ويتجاهل ما تم مسحه، 
بالتالي يعطي حجم داتا حقيقي.

- هناك ببعض قواعد البيانات مثل الاكسس مثلاً ميزة ضغط وإصلاح قاعدة البيانات : بالتالي يتخلص من الحجوم الظاهرة والغير مستخدمة.
- لكن هذه الميزة غير موجودة في SQLite .

- بالتالي الحل الأمثل لها لتستفيد من عمل نسخة إحتياطي فعليه هو :
أن تنشئ فعلياً قاعدة بيانات لها نفس جداول القاعدة الأساسية.
ثم من خلال أكواد الـ SQL  أن تعمل نسخ بيانات من كل جدول في القاعدة الأساسية  إلى  الجدول المقابل له في القاعدة الإحتياطية.

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

ضغط وإصلاح قاعدة البيانات SQLite يتم ب VACUUM المدعوم من اصدار 3.15.0
(07-07-24, 08:14 PM)Taha Okla كتب : [ -> ]في الـ SQLite   النسخ الاحتياطي من ضمن أكواد الكائن نفسه أو ضمن عمل نسخة أخرى من خلال النسخ واللصق  هي ليست بذات الجدوى المرجوة منها..
وذلك لأنه :
- عندما تضيف أي بيانات إلى أي قاعدة بيانات : فإنه حتماً سيزداد حجم قاعدة الباينات (وهذا معروف للكل).
- لكن عند مسح أي بيانات : تبقى قاعدة البيانات بنفس الحجم ولا ينخفض حجمها بحجم الداتا الممسوحة منها.

- هنا يأتي دور النسخ الاحتياطي الأساسي : حيث أنه ينسخ البيانات الموجودة فقط، ويتجاهل ما تم مسحه، 
بالتالي يعطي حجم داتا حقيقي.

- هناك ببعض قواعد البيانات مثل الاكسس مثلاً ميزة ضغط وإصلاح قاعدة البيانات : بالتالي يتخلص من الحجوم الظاهرة والغير مستخدمة.
- لكن هذه الميزة غير موجودة في SQLite .

- بالتالي الحل الأمثل لها لتستفيد من عمل نسخة إحتياطي فعليه هو :
أن تنشئ فعلياً قاعدة بيانات لها نفس جداول القاعدة الأساسية.
ثم من خلال أكواد الـ SQL  أن تعمل نسخ بيانات من كل جدول في القاعدة الأساسية  إلى  الجدول المقابل له في القاعدة الإحتياطية.

ومن سلبية هذا الأمر أنه يأخذ وقت فعلي بحجم البيانات، 
ولكن الميزة تظهر في النهاية أنه يعطي قاعدة بيانات حقيقة الحجم..
 اخ طه هي فكرة جميلة 
ولكن اعتقد اني وجدت عند تصفح قواعد البيانات بمتصفحها الخاص sqlite browser اجد من ضمن الادوات التي يتيحها ضمن القوائم التي يتضمنها خاصية ضغط القاعدة وهي تضغط القاعدة بشكل فعلي وتنقص حجمها ايضا على نحو شبيه بقواعد بيانات اكسس 
لذلك خمنت ان وجود مثل هذه الخاصية بالكود ممكن جدا
أنا بحثت ضمن الأكواد ولم أجد أي شيء عن الضغط كما نفعل في آكسس (كأمر خارجي)
وبحثت عبر جوجل ووجدت أن البعض أشار أنه لا يمكن ضغط قاعدة البيانات (ربما فكروا مثلما فكرت - أو أنها كانت معلومات قديمة لم أنتبه لتاريخ نشرها).

ولكن عندما ذكر الأخ ([b]Zuhare[/b]) أنه يمكن من خلال الأمر ("VACUUM")  
أنتبهت على أنه أمر داخلي ..

عندما قرأت عنه في الصفحة المشار لها : وجدته كما ذكرت سابقاً عبارة عن نسخ بيانات لملف جديد بدون نسخ البيانات المحذوفة.
ولكن شتان بين أن تقوم أنت بنسخها فتأخذ وقت كبير وبين أن يكون أمر داخلي ويختصر الوقت بشكل كبير جداً.
(08-07-24, 03:09 PM)Taha Okla كتب : [ -> ]أنا بحثت ضمن الأكواد ولم أجد أي شيء عن الضغط كما نفعل في آكسس (كأمر خارجي)
وبحثت عبر جوجل ووجدت أن البعض أشار أنه لا يمكن ضغط قاعدة البيانات (ربما فكروا مثلما فكرت - أو أنها كانت معلومات قديمة لم أنتبه لتاريخ نشرها).

ولكن عندما ذكر الأخ ([b]Zuhare[/b]) أنه يمكن من خلال الأمر ("VACUUM")  
أنتبهت على أنه أمر داخلي ..

عندما قرأت عنه في الصفحة المشار لها : وجدته كما ذكرت سابقاً عبارة عن نسخ بيانات لملف جديد بدون نسخ البيانات المحذوفة.
ولكن شتان بين أن تقوم أنت بنسخها فتأخذ وقت كبير وبين أن يكون أمر داخلي ويختصر الوقت بشكل كبير جداً.

Big Grin
هذا كود لضغط قاعدة بيانات sqlite  بحذف السجلات المهملة

كود :
VACUUM main INTO 'E:\Sqlite\Exemple db sqlite\chinook_backup.db';
كود ضغط واصلاح قاعدة البيانات نفسها :
كود :
SQLiteConnection Conn = new SQLiteConnection("Data Source = B2testdb.db");
Conn.Open();
SQLiteCommand cmd = new SQLiteCommand("VACUUM", Conn);
cmd.ExecuteNonQuery();
Conn.Close();

كود نسخة إحتياطية بحجم حقيقي بعد الضغط والاصلاح(للنسخة الاحتياطية) :
كود :
SQLiteConnection Conn = new SQLiteConnection("Data Source = B2testdb.db");
Conn.Open();
SQLiteCommand cmd = new SQLiteCommand("VACUUM main INTO 'backup.db'", Conn);
cmd.ExecuteNonQuery();
Conn.Close();
الصفحات : 1 2