قررت حديثا أن أنشى برنامج يعتمد على هاتين التقنيتين و ذلك كتدريب على VB.NET بعد أن هجرت حبيبتنا القديمة VB 6 .
و لكن لم يسبق لي أن برمجت برنامج متعدد المستخدمين تعتمد على الشبكات, و قد واجهتني عدة أسئلة أساسية لم أجد لها جواب في الكتب , لذا أرجوا منكم أن تتعاونوا معي ...
1- كما نعرف يمكن تعريف المستخدمين و الصلاحيات على SQL Server في داخله, و لكن كيف مثلاً أستخرج الصلاحيات و أسماء المستخدمين لقاعدة البيانات عبر ADO, فحسب ما لاحظت أنها تسجل في جداول خاصة بالنظام يبدأ اسمها بـ sys و لكنني لم أفهم طريقة تخزينه للصلاحيات و المستخدمين .
2- قرأت عن ميزة رائعة في SQL Server و هي أنه يقوم بتسجيل كل التغيرات في قاعدة البيانات في ملف ذو لاحقة Log , تسمح لنا بالتراجع عن كل التعديلات التي حصلت على قاعدة البيانات حتى تاريخ معين في حال حصول أي عطل أو ضرر , لكنني لم أعرف كيف يمكن استخدامها .
3- تختلف الـ ADO الجديدة عن القديمة أنها تعمل بطريقة غير متصلة Disconnected Mode ( أي يتم الاتصال بقاعدة البيانات فقط عند التحديث ) و هي طريقة مفيدة جداً للشبكات الكبيرة , و لكن السؤال : إذا كان لدينا جدول من 100 ألف جدول , و كنا نريد إجراء البحث فيها بشكل متكرر عندها نكون أمام حلين على حسب ما توصلت له :
إما أن نستدعي جميع كل الجدول لمرة واحدة (في المدة القصيرة) و لكل مستخدم على حدا إلى DataSet و نبحث فيها يشكل محلي ( الأمر الذي يبطئ البرنامج و يملئ الرامات إضافة للحاجة للتحديث الجدول كل فترة )
أو أن نتصل بشكل مكثف بقاعدة البيانات عند إجراء البحث و نعود فقط بالنتائج فقط ( عندها يضيع معنى Disconnected Mode كما أن فتح الاتصال يحتاج لوقت طويل)
فهل هناك طريقة ما لتجاوز ذلك .
و المزيد ( أسف للإطالة ) إذا كان لدينا مفاتيح في الجدول ذو ترقيم تلقائي, و لو أننا أضفنا سجل جديد و فعل الشيء ذاته مستخدم أخر , و بفرض أننا استخدمنا الطريقة الأولى في الربط) فقد يحدث هناك تضارب في الأرقام التسلسلية عند تحديث قاعدة البيانات ! أما أن الترقيم لا يتم فعلياً إلا عند التحديث.
أظن أنها أسئلة منطقية , و مرة أخره أسف للإطالة , و لكنني عجزت عن إكمال المشروع دون معرفة طبيعة هذه الأسئلة .
