المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : تصغير حجم قاعدة البيانات بحذف الـ Log File


Monzer Osama
25-Dec-2012, 06:15 AM
أحد الأصدقاء وصلت لديه حجم قاعدة بيانات البرنامج الى حوالي خمسين جيجا بايت !!!
نعم GB 50 مع العلم بأن عدد المستخدمين ليس بالكثير , وليس الشركة من الشركات الكبيرة...
كيف حدث هذا؟ ولماذا هذا الحجم الهائل؟

بعد الوقوف على المشكلة اتضح إنه بسبب الـ Log File الخاص بقاعدة البيانات الذي يتضخم دون رقيب .
إذ أن ملف البيانات الحقيقية (Data File )كان حجمه 500 ميغا فقط :cool:!.

السؤال هنا كيف أقوم بحل بحذف الLog file إذا لم أكن بحاجة إليه ؟
هنالك العديد من الطرق لكن سأتطرق لطريقة لا تحتاج فيها الى كتابة كود وهي:

1- قم بعمل نسخة احتياطية لقاعدة البيانات Backup
2- إفصل قاعدة البيانات وذلك بعمل De attach
3- إذهب الى ملف الـLog الذي تريد حذفه وقم بتغير إسمه
4- الآن قم بعم Attach لقاعدة البيانات من جديد.

وتلقائيا سيقوم SQL Server بإنشاء ملف الـ Log جديد ونظيف وحجمه صغير

Ehab
28-Dec-2012, 07:16 AM
كيف افصل قاعدة البيانات ب DE Attach ومن فين

Monzer Osama
28-Dec-2012, 07:24 AM
طبعا من خلال الـ SQL Server
افتح برنامج :
- Enterprise Manager إذا كننت تستخدم SQL2000
- SQL Server Managment Studio إذا كنت تستخدم SQL2005 - 2008

تابع الصورة
http://www.gp4arab.com/forum/attachment.php?attachmentid=603&stc=1&d=1230443606

عماد زيد
29-Dec-2012, 06:07 AM
أخ منذر قبل طرح الحل .. يجب شرح ما كانت نوعية الباك أب بهذه الشركة و كيفية تغييره لنوع أخر ...
أما مجرد حذف اللوغ فايل فهو سيكبر تدريجيا مالم يتم الحل من السبب الرئيسي ..
ا

Ehab
29-Dec-2012, 08:24 AM
نظرا لعدم تعاملي مع ال Log File من قبل فاريد ان اعرف مكانه بالتحديد وسامحني اذا كنت باسألك واعطلك عن الشرح

alnawrass
30-Dec-2012, 09:53 PM
بداية ما هو الـ Log File؟؟

فلنقل انك مخطط لعمل باك آب Backup لقاعدة بيانات القريت بلين كل ساعه

فلنقل انك قمت بأخذ باك آب الساعه التاسعه و يفترض انك ستقوم بعمل باك آب ثاني الساعه العاشره

و لنقل انه لا سمح الله حصلت مشكله في سيرفر قاعدة البيانات Data Base server الساعه التاسعة و 45 دقيقه!!

كيف ستتمكن من معالجة الأمر

السؤال بطريقه اخرى ما ما هو مصير الحركات Transactions اللي حصلت خلال الخمس و اربعين دقيقة الماضية و هي المدة من آخر نسخ احتياطي Backup قمت به " و هو الساعه التاسعه"

هذه العمليات و الـ Transactions ستكون مخزنه في الـ Log file..

و عندها ستقوم باحضار آخر نسخه احتياطيه للبيانات "الساعه التاسعه" و آخرTransaction Log و لنقل "كان خلال الساعه التاسعه و النصف" و من خلال الأمر Restore للنسخه الاحتياطيه للبيانات و النسخه الاحتياطيه للـ Transaction log

تعيد الأمور لما كانت عليه في الساعه التاسعه!!

لاحظ مع انك قمت باستعادة الـ Transaction Log للساعه التاسعه و النص لا تزال الداتا بيس هي للساعه التاسعه فقط

عندها يجب استخدام الأمر TRUNCATE لتقوم بأخراج العمليات الموجوده في الـTransaction log و التي لم تخزن في قاعدة البيانات "من الساعه 9.00 و حتى الساعه 9.45 " ليتم تحديث قاعدة البيانات

هذه هي اهمية الـ Transaction Log

alnawrass
30-Dec-2012, 10:04 PM
توجد هناك خاصية للحد من حجم الـ Transaction Log

من خلال اختيار Restrict Growth to ...MB
و عندها تقوم بتحديد الحجم الذي تريد ان لا يتعداه الـTransaction Log
وهي موضحه في الصوره الملحقه

http://dc106.4shared.com/download/78242065/5ca15942/TR1.JPG

alnawrass
30-Dec-2012, 10:06 PM
عذرا الصوره هنا:

http://dc106.4shared.com/download/78242065/5ca15942/TR1.JPG?dsid=JCIYITKNJWGBIHIHJGJCHWKSKLKKJWIYIHHNI AJKIPITJFKJIVIRIWIRIGJUGFGHIEICIIJEKTKPKR

itsponsor
30-Dec-2012, 10:33 PM
السلام عليكم
جزاك الله خيرا
وده طريف تاني تقلل حجم اللوج فيل انا باستخدمها

1- All Great Plains and SQL users must be logged out of the database before continue. (Use User Activity in Great Plains to check logged on users)
2- Make a full backup of the database.
3- Open SQL Query Analyzer and execute the following commands against ABCAR database:

BACKUP LOG DATABASE NAME with TRUNCATE_ONLY
DBCC SHRINKFILE (2, 20)

alnawrass
31-Dec-2012, 04:00 AM
اخي العزيز itsponsor هناك طريقة اخرى للقيام بنفس الطريقة السابقة التي تفضلت بشرحها لكن بدون اللجوء الى كود الـ Transact SQL و هي طريقه اسهل بالضغط بالزر اليمين للماوس على اسم قاعده البيانات ثم اتباع الخطوات الموضوحه بالصوره

http://dc105.4shared.com/download/78279333/5a524bba/TR2.JPG?dsid=JCIYITKNJWGBIHIHJGJCHWKSKLKKJWIYIHHNI AJKIPITJFKJIVIRIWIRIGJUGFGHIEICIIJEKTKPKR

itsponsor
31-Dec-2012, 10:04 PM
جزاكم الله خيرا
بجد شئ جميل جدا بكدا وصلنا الي اكثر من طريقة مفيدة وده فائدة تبادل المعلومة

Ehab
01-Jan-2013, 11:37 AM
فعلا تبادل الخبرات في هذا المجال من اهم الاشياء لان الدراسة لا تحتوي كل الاجزاءجزاكم الله خيرا
بجد شئ جميل جدا بكدا وصلنا الي اكثر من طريقة مفيدة وده فائدة تبادل المعلومة

Monzer Osama
01-Jan-2013, 12:31 PM
أشكر للجميع تفاعلهم وإضافتهم ......

MOAMEN
30-Jan-2013, 06:58 AM
السلام عليكم ورحمة الله وبركاته

الاخوة الافاضل فى هذا المنتدى الكريم جزاكم الله خيرا على هذا الموضوع الرائع

فانا اعانى فى منتداى من كارثة تضخم حجم الداتا بيز والتى تتسبب فى طردنا من السيرفرات

ولى سؤال ورجاء

سؤالى هل يسرى هذا الشرح على سيرفرات لينوكس ام ويندوز ؟

اما الرجاء فهل يمكن لاحد الخبراء ان يساعدنى فى تنفيذ هذا الشرح

لانى بكل اسف استوعبت الفكرة ولكنى لست بارع فى التنفيذ :(

فى انتظار ردودكم الكريمة

وارجو الاستجابة لمطلبى ومراسلتى على الخاص ممن يريد ان يساعدنى

لانى لاادرى هل وضع الايميلات والمواقع مسموح ام ممنوع فى منتداكم الكريم

شكرا لكم

kh_waleed23
19-Apr-2013, 05:27 PM
حاولت أن أعمل فصل لقاعدة البيانات الخاصة بالشركة تظهر رسالة بأن القاعدة مستخدمة
علما بأن المستخدمين كلهم log off وفصلت للـ dynamics
بس قاعدة البيانات الخاصة بالشركة أبت أن تنفصل وتظهر رسالة [نه هناك مستخدمون ؟؟
أرجو االافادة

download2m
19-Apr-2013, 06:30 PM
حاولت أن أعمل فصل لقاعدة البيانات الخاصة بالشركة تظهر رسالة بأن القاعدة مستخدمة
علما بأن المستخدمين كلهم log off وفصلت للـ dynamics
بس قاعدة البيانات الخاصة بالشركة أبت أن تنفصل وتظهر رسالة [نه هناك مستخدمون ؟؟
أرجو االافادة

هل جربت ان تقوم بايقاف ال SQL Service و اعادة تشغيلة مرة اخرى او ان تقوم بعمل ريستارت للسيرفر ولاكن تاكد فى كل الاحوال ان لديك backup

alnawrass
20-Apr-2013, 06:09 AM
اخي الفاضل جرب ان تستخدم Single User Mode
مرات لو فاتح الـ SQL QUary Analyzer بتطلع نفس الرساله

Monzer Osama
20-Apr-2013, 07:44 AM
السلام عليكم ورحمة الله وبركاته


الاخوة الافاضل فى هذا المنتدى الكريم جزاكم الله خيرا على هذا الموضوع الرائع

فانا اعانى فى منتداى من كارثة تضخم حجم الداتا بيز والتى تتسبب فى طردنا من السيرفرات

ولى سؤال ورجاء

سؤالى هل يسرى هذا الشرح على سيرفرات لينوكس ام ويندوز ؟

اما الرجاء فهل يمكن لاحد الخبراء ان يساعدنى فى تنفيذ هذا الشرح

لانى بكل اسف استوعبت الفكرة ولكنى لست بارع فى التنفيذ :(

فى انتظار ردودكم الكريمة

وارجو الاستجابة لمطلبى ومراسلتى على الخاص ممن يريد ان يساعدنى

لانى لاادرى هل وضع الايميلات والمواقع مسموح ام ممنوع فى منتداكم الكريم


شكرا لكم

أخ مؤمن , هذا الشرح خاص بقواعد بيانات SQL Server وبالنسبة الى منتداك ,يمكنك مراسلتي على info()almonzer.com أشرح لك الحل ....

Monzer Osama
20-Apr-2013, 07:47 AM
حاولت أن أعمل فصل لقاعدة البيانات الخاصة بالشركة تظهر رسالة بأن القاعدة مستخدمة
علما بأن المستخدمين كلهم log off وفصلت للـ dynamics
بس قاعدة البيانات الخاصة بالشركة أبت أن تنفصل وتظهر رسالة [نه هناك مستخدمون ؟؟
أرجو االافادة
أخي خالد , من خلال الـ SQL Server / Enterprise Manager ادخل الى الـ Current Activity وستجد الإتصالات المفتوحة مع قاعدة البيانات التي لا تستطيع فصلها , م بالتأشير على هذه العملية واعمل لها kill أو Disconnect (بحسب نوع نسخة SQL التي تعمل عليها)

kh_waleed23
27-Apr-2013, 04:34 PM
يعطيكم ألف عافية

M_hammouz
15-Oct-2013, 10:28 AM
انا من واقع خبرتي لا انصح احد بحذف ملف log ولكن خطوت ال du attahed جيده الذي اقترحها الاخ منذر ولكن يمكن عمل باكب فقط ل log وحفظة ومن ثمة حذفة من database