it-swarm.asia

كيف يمكنني اقتطاع سجل المعاملات في قاعدة بيانات SQL Server 2008؟

كيف يمكنني اقتطاع سجل المعاملات في قاعدة بيانات SQL Server 2008؟

ما هي أفضل الطرق الممكنة؟

جربت هذا من مدونة على النحو التالي:

1) من قاعدة بيانات الإعداد إلى الاسترداد البسيط ، وتقليص الملف وإعداد الاسترداد الكامل مرة أخرى ، فإنك في الواقع تفقد بيانات السجل القيمة ولن تتمكن من استعادة النقطة في الوقت المناسب. ليس ذلك فحسب ، لن تتمكن أيضًا من استخدام ملفات السجل اللاحقة.

2) تقليص ملف قاعدة البيانات أو قاعدة البيانات يضيف تجزئة.

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

BACKUP LOG [TestDb] TO  DISK = N'C:\Backup\TestDb.bak'
GO

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

9
Neo

الطريقة الأكثر أمانًا وصحيحًا لاقتطاع ملف السجل إذا كانت قاعدة البيانات في وضع الاسترداد الكامل هي إجراء نسخ احتياطي لسجل المعاملات (بدون TRUNCATE_ONLY. سيتم إيقاف هذا في الإصدارات المستقبلية ولا ينصح به).

يبدو أنك تريد تقليص ملف السجل الخاص بك بعد ذلك ، وفي هذه الحالة ستقوم بتشغيل أمر DBCC SHRINKFILE(yourTLogName). هناك معلمة ثانية اختيارية للحجم المطلوب لتقليصه.

4
Thomas Stringer

يمكنك نسخ السجل احتياطيًا إلى الجهاز الفارغ:

backup log [databasename] to disk = 'nul';

أو يمكنك تبديل نموذج الاسترداد إلى بسيط ثم العودة إلى كامل/مجمّع مرة أخرى.

8
Luis Gonzalez

إذا كنت لا تهتم ببيانات السجل الخاصة بك وتريد فقط التخلص منها:

قم بتغيير نموذج الاسترداد من كامل إلى بسيط ، ثم عد إلى كامل. تقليص الملف باستخدام DBCC SHRINKFILE مع الوسيطة TRUNCATEONLY

سيغير الأمر التالي نموذج الاسترداد من كامل إلى بسيط

ALTER DATABASE <databse_name> SET RECOVERY SIMPLE

سيغير الأمر التالي نموذج الاسترداد إلى كامل

ALTER DATABASE <databse_name> SET RECOVERY FULL

للعثور على اسم ملف السجل ، يمكنك استخدام الاستعلام التالي

SELECT name 
FROM sys.master_files
WHERE database_id = DB_ID('<databse_name>')

تقليص الملف

DBCC SHRINKFILE (N'<logical_file_name_of_the_log>' , 0, TRUNCATEONLY)

راجع ما هو الأمر الذي يقتطع ملف سجل SQL Server؟ لمزيد من المعلومات حول هذا

6
Alex