هل يمكن نسخ جداول داخل الفاير بيرد؟
#1
السلام عليكم
من المعروف أن قاعدة الفاير بيرد تكون بالإسم DataBase.fdb وأريد أن أخذ نسخة من الجداول كل شهر أو كل سنة هل يمكن إنشاء عدة نسخ بإختلاف الإسم أم  نسخقاعدة البيانات كاملة بجداولها؟
كيف يمكن تشفير وضغط وفك تشفير قاعدة البيانات عند الحفظ وعند الإستدعاء؟هل من مثال؟
الرد
#2
وعليكم السلام ورحمة الله

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

كود :
CREATE TABLE t2
AS
SELECT * FROM t1;

التشفير راجع هذا

Database Encryption
إذ جاءوكم من فوقكم ومن أسفل منكم وإذ زاغت الأبصار وبلغت القلوب الحناجر وتظنون بالله الظنون
[-] كل من 1 user says قال شكرا ل Delphi4Us على المشاركة المفيدة
  • ALG2009
الرد
#3
وعليك السلام

يوجد مكون إسمه FDIBBackup في خصائصه توجد خاصية التشفير ، وأمور أخرى

بعد ربطه ، تكون عملية الحفظ كالتالي ومثال

كود :
DataModule1.FDIBBackup1.Backup;
showmessage('La sauvegarde complète');

مثال وضع الاعدادات ، نفس إعدادات ربط قاعدة البيانات

كود :
          DataModule1.FDIBBackup1.DriverLink := DataModule1.FDPhysFBDriverLink1;

          DataModule1.FDIBBackup1.UserName := 'sysdba';
          DataModule1.FDIBBackup1.Password := 'masterkey';
          DataModule1.FDIBBackup1.Host := عنوان الجهاز;

          DataModule1.FDIBBackup1.Verbose  := True;
          DataModule1.FDIBBackup1.Protocol := ipTCPIP;   //   (ipLocal, ipTCPIP, ipNetBEUI, ipSPX);

          DataModule1.FDIBBackup1.Database := قاعدة البيانات;
[-] كل من 2 users say قال شكرا ل larbiparadox على المشاركة المفيدة
  • ALG2009, Delphi4Us
الرد
#4
جزاكم الله خير

يعني الحفظ والإسترجاع يكون على مستوى الجداول فقط أي حفظ الجداول بأسماء مغايرة  أي لا ننسخ قاعدة البيانات كاملة
يعني لو أردنا إسترجاع محفوظات سنة معينة يكون بإسترجاع الجداول؟ أليس تحميل قاعدة البيانات كلها ؟
وإذا أردنا أخذ بعض المعلومات من جدول من سنة ماضية لأخد بعض القيم منه وإضافتها لجدول آخر هنا لا يمكن أن نقول خد القيم من الجدول كذا من قاعدة البيانات كذا
يعني تكون الجداول لكل سنة ضمن نفس قاعدة البيانات المشكل هنا حتى ولو كانت الجداول كثير ننسخها بإسم مغاير؟
أو يمكن أخد قيم من قاعدة بيانات إلى أخرى أي الطرق صحيحة؟
الرد
#5
بالنسبة لعملية الاسترجاع تكون بواسطة بالمكون FDIBRestore

اعدادات

كود :
          //==================Restore=======================================================================================
          DataModule1.FDIBRestore1.DriverLink := DataModule1.FDPhysFBDriverLink1;

          DataModule1.FDIBRestore1.UserName := 'sysdba';
          DataModule1.FDIBRestore1.Password := 'masterkey';
          DataModule1.FDIBRestore1.Host := 'local';



          DataModule1.FDIBRestore1.Protocol := ipLocal;
          DataModule1.FDIBBackup1.BackupFiles.Add(المسار مع اسم قاعدة اليانات المراد استرجاعها);
          //=========================================================================================================



عملية الاسترجاع

كود :
  DataModule1.FDIBRestore1.Restore;

  showmessage('Restauration complète');
[-] كل من 1 user says قال شكرا ل larbiparadox على المشاركة المفيدة
  • ALG2009
الرد
#6
يعني الحفظ والإسترجاع يكون على مستوى الجداول فقط أي حفظ الجداول بأسماء مغايرة أي لا ننسخ قاعدة البيانات كاملة
يعني لو أردنا إسترجاع محفوظات سنة معينة يكون بإسترجاع الجداول؟ أليس تحميل قاعدة البيانات كلها ؟
وإذا أردنا أخذ بعض المعلومات من جدول من سنة ماضية لأخد بعض القيم منه وإضافتها لجدول آخر هنا لا يمكن أن نقول خد القيم من الجدول كذا من قاعدة البيانات كذا
يعني تكون الجداول لكل سنة ضمن نفس قاعدة البيانات المشكل هنا حتى ولو كانت الجداول كثير ننسخها بإسم مغاير؟
أو يمكن أخد قيم من قاعدة بيانات إلى أخرى أي الطرق صحيحة؟
الرد
#7
الـ  Restore والـ Backup ينسخ قاعدة البيانات كاملة وربما اجزاء منها لم استخدمه
الاوامر DDL مثل CREATE TABLE هو لا يقوم بانشاء جداول داخلية فقط يمكن به نسخ جداول الى ملف خارجي 
حسب ضني تجزئة البيانات السنوية عمل لا فائدة فيه وغير منطقي 
فما المشكلة في ان يكون لدي جدول فيه صادرات وواردات شحنات بضائع البواخر للميناء من سنة 2001 حتى سنة 2020 الان ...؟
على كل حال
كل الخيارات يمكن تنفيذها بالنهاية 
نسخ قاعدة البيانات وحفظها بتاريخ معين والاتصال بها واسترجاع البيانات منها
او نسخ جدول الى جدول اخر وبتاريخ معين
في النهاية المبرمج له حرية الاختيار
إذ جاءوكم من فوقكم ومن أسفل منكم وإذ زاغت الأبصار وبلغت القلوب الحناجر وتظنون بالله الظنون
الرد
#8
(20-11-2020, 05:58 PM)Delphi4Us كتب : وعليكم السلام ورحمة الله

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

كود :
CREATE TABLE t2
AS
SELECT * FROM t1;

التشفير راجع هذا

Database Encryption

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

* كيف يكون ذلك : إذا كانت نفس قاعدة البيانات عن طريق sql إدراج حقول إلى جدول من جدول أخر كما يمكنك اظافة الفلترة لتأخذ حقول معينة
كود :
INSERT INTO table1 ( column1 )
SELECT  col1
FROM    table2

* أما في حالة قاعدتين إثنين منفصلتين بواسطة sql الكتابة السابقة، يمكن عمل ذلك بواسطة firedac بواسطة مكون FDLocalSQL
مثال وذلك ربط  FDQuery1 مع FDConnection1 و ربط FDQuery2 مع  FDConnection2 وهنا حتى و لو قواعد البيانات مختلفة كـ أكسس او فير ستعملان معا كأنها قاعدة بيانات واحدة

* وذلك ندرج FDLocalSQL1 والذي بدوره يمكن اضافة مجموعة من DataSets و نربط FDLocalSQL1 مع FDConnection3 التي تكون اعدادتها DriverName تساوي SQLite و بعدها تنشيطها و بعدها الذهاب الى FDLocalSQL1 وفي DataSets  اضافة FDQuery 1 و 2

مثال ادراج يدوي لـ DataSets الخصة بـ FDLocalSQL1

FDLocalSQL1.DataSets.Add(FDQuery1, '', 'region')

FDLocalSQL1.DataSets.Add(FDQuery2, '', 'employees')

* وبعدها ندرج ونربط FDQuery3 مع FDConnection3 وهنا في FDQuery3 يمكنا العمل مع الجداول الموجودة في القواعد المربوطة بـ FDConnection1 و FDConnection2
الرد
#9
جزاكم الله خيرا
ولكن أيهما أفظل هل أستعمل قاعدة بيانات واحدة وأنسخ الجداول داخلها بأسماء مختلفة، أم من الأفضل وضع كل قاعدة واحدها.
متى يستخدم كل قاعدة بيانات وحدها ومتى يتم نسخ الجداول في نفس قاعدة البيانات؟
الرد


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


مستخدمين يتصفحوا هذا الموضوع: 1 ضيف