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

مزيد من الأسئلة

بدأه mostafa111 في 5 فبراير 2012 · 3 رد · 868 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي المزيد من الأسئلة التي تثير فضولي حول SQL Server

1- عندما ننشئ قاعدة بيانات جديدة نلاحظ أنه قد تم حجز ملفين واحد بلاحقة mdf حجمه 3MB والآخر بلاحقة ldf حجمه 1MB

والأول دوما يكون أكبر من الثاني

فما وظيفة كل ملف (أو ماذا يخزن كل ملف)؟

2- هل يمكن التخلي عن أحد الملفين ؟

3-لماذا يحجز مباشرة مساحة 3 ميغا و 1 ميغا مع أننا لم نبدأ بملء أي شيء ؟ (ربما قاعدة البيانات صغيرة جدا أصغر من 1 ميغا فلماذا أنا مجبور أن أثقل القاعدة وأخزن 3 ميغا)!!

4- عند نشر البرنامج (والذي يتعامل مع قاعدة بيانات) كيف ستكون صيغة القاعدة؟ هل ستبقى mdf ( أو ما هي الخطوات التي علي أن أقوم بها على قاعدة البيانات)؟

5- أعمل على برنامج حاليا ولدي احتمالين:

الأول: إنشاء قاعدة بيانات واحدة وتحوي n جدولا.

الثاني: إنشاء n قاعدة بيانات كل قاعدة بيانات تحوي جدولا واحدا.

علما أن البرنامج قد يوجه إلى عدة فئات من المستخدمين وليس من الضرورة على كل مستخدم أن ينزل كل الجداول أو قواعد البيانات.

فأي الطريقتين أفضل؟

6- أثناء العمل على قاعدة البيانات انقطع التيار الكهربائي وعندما أعدت تشغيل الحاسوب وجدت أن قاعدة البيانات مضروبة؟ لماذا؟ وهل من أمل لإصلاحها؟ (هذا السؤال من أجل المرات القادمة لأني حذفت القاعدة المضروبة).

7- عند تخزين نوع nvarchar(n) اكتشفت أنه يخزنه ب n*2 بايت ولو أنك لم تملأ كافة السطور ب n محرف (أليس هذا صحيحا؟) وغن كان صحيحا فلماذا؟ وهل يوجد طريقة تجعله يحجز حجزا ديناميكيا؟

8- هل يمكن إجراء تعليمة sql على قاعدتين؟ (يعني معروف نحن نقدر أن نجري تعليمة على أكثر من جدول بوضع اسم الجدول ثم اسم الحقل فهل يمكن ذلك على مستوى قواعد البيانات وكيف؟)

وشكرا جزيلا على كل سيساعدني في هذه الأسئلة..

#2

السلام عليكم.

1) ملف ال mdf هو الملف الذي يستخدم في تخزين البيانات, أما ملف ldf فيتم استخدامه من قبل سيكوال سيرفر لتزين ال Transactions التي يتم عملها على قاعدة البيانات بشكل مؤقت حتى يتم استخدامها في حال حدوث مشكلة لقاعدة البيانات. و الحجم الافتراضي هو 3 ل mdf و 1 ldf و يمكنك البدء ب 1 ميغا ل mdf ( من صفحة إنشاء قاعدة بيانات جديدة )و هو أصغر حجم يسمح به.

2) لا يمكن التخلي عن أحد الملفين.

3) أصغر مساحة يمكن أن تبدأ بها هي 1 ميغا, و بشكل عام لا يمكنك زيادة حجم الداتابيس بشكل صغير فكله يجب أن يكون بالميغاو يفضل دائماً أن لا تجعل قاعدة البيانات صغيرة على نفس حجم بياناتك من أجل الأداء الأفضل.

4) عند نشر البرنامج: يمكنك أن تعمل سكريبت يقوم بعمل كل ذلك بشكل أوتوماتيكي ( حتى أنه يمكن تضمينه مع عملية تنزيل البرنامج نفسه ) , أو يمكنك عمل نسخ احتياطي/استرجاع لقاعدة البيانات.

5) برأيي : إذا كانت الترابط بين أفكار البرنامج أن يكون هناك قاعدة بيانات واحدة, ووجود عدة مستخدمين لا يمنع من عمل ذلك , كما أنه يكون أفضل من ناحية إدارة قاعدة البيانات.

6) هذه الحالات يمكن أن تحدث, و ملف ال ldf الذي ذكر في الأعلى يفيد كثيراً في هذه الحالات إذا كان هناك بعض البيانات لم يتم تخزينها بعد على قاعدة البيانات, و بشكل عام يوجد طرق خاصة متقدمة تستخدم لعملية الاصلاح و لكن يجب أن تحتاط لاحتمال عدم القدرة على الاصلاح لذلك يجب أن يكون لديك استراتيجية نسخ احتياطي تناسب طبيعة و أهمية التطبيق الذي تستخدمه.

7) nvarchar يحجز فقط التالي: عدد الأحرف التي تم تخزينها ( و ليس المحجوزة ) * 2

8) نعم يمكنك إجراء استعلام على قاعدتين و هذا مثال:

SELECT * FROM Database1.dbo.Table1 JOIN Database1.dbo.Table2 ON Table1.ID= Table2.ID

و يمكنك حتى إجراء استعلام على سيرفرين مختلفين عن طريق Linked Server حيث بعض إضافته يجب كتابة التالي:

SELECT * FROM Server1.Database1.dbo.Table1 JOIN Server2.Database1.dbo.Table2 ON Table1.ID= Table2.ID

تم تعديل هذه المشاركة بواسطة Adel Khayata في 5 فبراير 2012 في 08:32

#3

شكرا جزيلا على إجاباتك :

حاولت إنشاء قاعدة بيانات وتهيأتها بالحجم 1 ميغا لكنه أعطاني رسالة خطأ وقال أنه لا يجوز أقل من 3 ميغا

أرجو التوضيح أكثر بالنسبة للحجم يعني ما ميزة الحجم الكبير (ما فائدة ال 3 ميغا الزائدة)؟ لماذا أزيد من حجم قاعدة البيانات؟

بالنسبة للسؤال الرابع لم تجبني على صيغة قاعدة البيانات كيف ستكون (.sql أم .mdf) أم ماذا؟

سؤال آخر عند نشر القاعدة هل سيبقى حجمها كما هو أم سيتغير (يقل أم يكبر)؟

بالنسبة للسؤال الخامس فهمت منك أن الأفضل إنشاء قاعدة بيانات واحدة مع عدة جداول ولكن أرجو حل مشكلتي وهي: عندما أريد توزيع البرنامج على عدة مستخدمين كل مستخدم سأعطيه جدولا واحدا فقط (يعني سأعطيه 10 ميغا) بدل أن أعطيه كامل الجداول (مثلا سيكون حجمها 1 جيغا) فما الحل؟

#4

بالنسبة لحجم قاعدة البيانات، انا لم اجرب انشاءها و لكن منصفحة الانشاء وجدت انه يمكن تغيير الحجم الى 1 ميغا

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

بالنسبة لصيغة قاعدة البيانات: mdf يستخدم لتخزين البيانات نفسها من قبل سيكوال سيرفر اما SQL فهو بالعادة امتداد ملفات السكريبت التي تحتوي على كود يتم تنفيذه على قاعدة البيانات ومن الممكن ان يكون الصيغة التي تستخدم عند تحزيم برنامجك من اجل تنزيل البرنامج عند العميل.

حجم القاعدة سيبقى كما هو عند نشرها او تنزيلها على جهاز اخر طالما انك تستخدم نفس الاعدادات الاصلية و لكن طبعا حجم قاعدة البيانات سيزداد مع الزمن بعد استخدام البرنامج.

بالنسبة للسؤال الاخير: اذا كان جميع المستخدمين في موقع فهذه ليست بمشكلة فانت تستطيع اعطاء صلاحيات على الجداول لمستخدمين مختلفين، اما كانوا في مواقع مختلفة و طبيعة البرنامج لا تحتاج فيها الى كل الجداول لمستخدم واحد فيمكن عندها تقسيم الجداول الى عدة قواعد بيانات، مع انني اؤكد مرة اخرى انه الافضل استخدام قاعدة بيانات واحدة لانه اذا كان احد المستخمين لا يستخدم احد الجداول فهذا يعني لا يوجد مساحة محجوزة لهذا الجدول.

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