كيفية تقليص قاعدة بيانات في SQL Server

هام: تمت ترجمة هذه المقالة باستخدام برامج مايكروسوفت للترجمة الآلية ومن المحتمل ان يتم تحريرها او تدقيقها بعد ذلك من خلال تكنولوجيا منصة مجموعات الترجمة(CTF) او من خلال مترجم بشري. تقدم لك شركة مايكروسوفت هذه المقالات المترجمة بشكل آلي او بالترجمة البشرية او بعد تحريرها وتدقيقها من قبل مجموعات الترجمة حتى تمكنكم من الوصول إلى جميع المقالات الموجودة في قواعد المعرفة لديها بلغات مختلفة. إلا أن المقالات المترجمة قد تحتوي على أخطاء في المفردات او بناء الجمل او النحو. وعليه، فإن شركة مايكروسوفت ليست مسؤولة عن اية أخطاء او عدم دقة في الترجمة او أية أضرار قد تحدث نتيجة أخطاء في ترجمة محتويات النص او استخدامه من قبل العملاء.

اضغط هنا لرابط المقالة باللغة الانجليزية307487
الموجز
تتناول هذه المقالة العديد من الطرق التي يمكنك استخدامها لتقليص قاعدة بيانات في Microsoft SQL Server. قبل أن تقوم بتقليص قاعدة بيانات باستخدام الطرق الموضحة في هذه المقالة، الرجاء يجب مراعاة ما يلي:
  • تتم إعادة تعيين حجم بيانات إلى آخر حجم المكون (هو الحجم الافتراضي، أو حجم الأخيرة التي تم تعيينها باستخدام تغيير قاعدة البيانات) بعد كل عملية إعادة تشغيل. ولذلك، ما لم يكن لديك لاستخدام قيم مختلفة أو الحصول على فترة راحة فورية، لم تكن لاستخدام أي من الإجراءات التي تم توثيقها في هذه المقالة. يمكنك الانتظار لبدء تشغيل خدمة SQL Server لتقليل حجم التالي. حجم قاعدة بيانات أكبر ليس ستؤثر سلبا على أداء خادم SQL.
  • في SQL Server 2005 والإصدارات الأحدث، تقليص قاعدة بيانات يختلف عن تقليص قاعدة بيانات مستخدم باستثناء الحقيقة إعادة تعيين بيانات هذا الحجم المكونة لبعد كل عملية إعادة تشغيل مثيل SQL Server.
  • أنها آمنة لتشغيل مناسب في بيانات عندما بيانات نشاط مستمر. ومع ذلك، فقد تواجه أخطاء أخرى مثل حظر حالات التوقف التام وهكذا منع تقليص من إكمال. ولذلك، بغية التأكد من أن ينجح ليص بيانات، نوصي أن تقوم بذلك عندما يكون الملقم في وضع المستخدم المفرد أو عندما قمت بإيقاف كافة أنشطة بيانات.

معلومات بيانات

قاعدة بيانات عمل مؤقتة. يستخدم SQL Server بيانات لتنفيذ العديد من المهام. ومن بين تلك المهام ما يلي:
  • تخزين الجداول المؤقتة التي تم إنشاؤها بشكل صريح
  • Worktables الاحتفاظ بنتائج الوسيطة التي تم إنشاؤها أثناء الاستعلام معالجة والفرز
  • تتحقق مؤشرات ثابتة
  • تخزين إصدار السجلات عند استخدام مستوى العزل لقطة أو مستوى العزل لقطة الالتزام القراءة
يسجل ملقم SQL معلومات كافية في سجل بيانات الحركة لاسترجاع معاملة، لكن ليس على إعادة المعاملات أثناء استرداد قاعدة البيانات. تزيد هذه الميزة إدراج البيانات في بيانات الأداء. بالإضافة إلى ذلك، لم تكن لتسجيل معلومات لإعادة أية حركات لأنه يتم إعادة إنشاء بيانات كل مرة يتم إعادة تشغيل SQL Server. لذلك، قد لا توجد حركات للف إلى الأمام أو العودة إلى الحالة السابقة. عند بدء تشغيل ملقم SQL، إعادة إنشائه باستخدام نسخة من قاعدة بيانات، وتتم إعادة تعيين بيانات إلى حجمه المكون الأخير. حجم المكون هو حجم الصريح الأخير الذي تم تعيينه باستخدام حجم ملف تغيير عملية مثل تغيير قاعدة البيانات التي تستخدم خيار تعديل الملف أو بيانات DBCC SHRINKFILE أو DBCC SHRINKDATABASE .

بشكل افتراضي، يتم تكوين قاعدة بيانات للنمو التلقائي حسب الحاجة. لذلك، قاعدة البيانات هذه قد متوقعة زيادة في ذلك الوقت إلى حجم أكبر من الحجم المطلوب. إعادة تشغيل ملقم SQL بسيطة بإعادة تعيين حجم بيانات حجمه مكون آخر.

في SQL Server 2005 والإصدارات الأحدث، يمكنك استخدام أي من الأساليب التالية لتغيير حجم بيانات.

الأسلوبيتطلب إعادة التشغيل؟معلومات أخرى
تغيير قاعدة البياناتنعمأكمل يعطيك التحكم في حجم ملفات بيانات افتراضية (tempdev وتيمبلوج).
DBCC SHRINKDATABASEلايعمل على مستوى قاعدة البيانات.
DBCC SHRINKFILEلايمكنك تقليص الملفات الفردية.
Studio إدارة ملقم SQLلاهذا أساسا وسيلة لتقليص ملفات قاعدة البيانات من خلال واجهة المستخدم الرسومية.

ملاحظة: لا تظهر Studio إدارة ملقم SQL في SQL Server 2005 الحجم الصحيح لملفات بيانات بعد عملية تقليص. دائماً يتم سحب القيمة "المساحة المخصصة حاليا" من sys.master_files دي أم، ولا يتم تحديث هذه القيمة بعد حدوث عملية تقليص لقاعدة بيانات. للعثور على الحجم الصحيح لملفات بيانات بعد عملية تقليص، تنفيذ العبارة التالية في Studio إدارة ملقم SQL:

use tempdbgoselect (size*8) as FileSizeKB from sys.database_files
تتم مناقشة الأساليب الثلاثة الأولى هنا.

ملاحظة: لتثبيت SQL Server 2000، سيكون لديك لاستخدام "محلل استعلام" بدلاً من SQL Server إدارة Studio. أيضا، سوف تتطلب الأوامر DBCC وضع قاعدة البيانات في وضع المستخدم المفرد.

يمكنك استخدام الطرق الثلاث التالية لتقليص بيانات إلى حجم أصغر من حجم المكونة له.

الطريقة الأولى: أوامر SQL لاستخدام
ملاحظة: تتطلب هذه الطريقة إعادة تشغيل SQL Server.
  1. إيقاف ملقم SQL.
  2. في موجه الأوامر بدء تشغيل المثيل في وضع الحد الأدنى من التكوين. للقيام بذلك، اتبع الخطوات التالية:
    1. في موجه الأوامر، تغيير إلى المجلد التالي:
    2. إذا كان المثيل مثيل مسمى من SQL Server، قم بتشغيل الأمر التالي:
      sqlservr.exe-s اسم مثيل-c-f
      إذا كان المثيل الافتراضي مثيل SQL Server، قم بتشغيل الأمر التالي:
      sqlservr-c-f
      ملاحظة:
      المعلمات -c و -f يؤدي SQL Server للبدء في وضع الحد أدنى من تكوين يحتوي على حجم بيانات 1 MB لملف البيانات و 0.5 ميغابايت لملف السجل.
  3. الاتصال ب SQL Server باستخدام "محلل استعلام"، ثم قم بتشغيل أوامر SQL للعمليات التالية:
       ALTER DATABASE tempdb MODIFY FILE   (NAME = 'tempdev', SIZE = target_size_in_MB)    --Desired target size for the data file   ALTER DATABASE tempdb MODIFY FILE   (NAME = 'templog', SIZE = target_size_in_MB)   --Desired target size for the log file					
  4. إيقاف ملقم SQL. للقيام بذلك، اضغط Ctrl + C في إطار "موجه الأوامر"، أعد تشغيل ملقم SQL كخدمة، ثم تحقق من حجم الملفات Tempdb.mdf و Templog.ldf.
حد من هذا الأسلوب أنها تعمل فقط على tempdev المنطقي ملفات بيانات افتراضي وتيمبلوج. إذا تم إضافة المزيد من الملفات إلى بيانات، يمكنك تقليص عليها بعد إعادة تشغيل SQL Server كخدمة. يتم إعادة إنشاء كافة ملفات بيانات أثناء بدء التشغيل. ومع ذلك، هي فارغة ويمكن إزالتها. لإزالة ملفات إضافية في بيانات، استخدم الأمر تغيير قاعدة البيانات باستخدام خيار إزالة الملف .

الطريقة الثانية: استخدام الأمر DBCC SHRINKDATABASE
استخدام الأمر DBCC SHRINKDATABASE لتقليص قاعدة بيانات. يتلقى DBCC SHRINKDATABASE معلمة target_percent. هذا هو النسبة المئوية من المساحة الحرة في ملف قاعدة البيانات المطلوبة بعد أن يتم تقليص قاعدة البيانات. إذا كنت تستخدم DBCC SHRINKDATABASE، قد تضطر إلى إعادة تشغيل ملقم SQL.
  1. تحديد المساحة المستخدمة حاليا في بيانات باستخدام الإجراء sp_spaceused تخزين. وبعد ذلك، حساب النسبة المئوية للمساحة الحرة متروك لاستخدامه كمعلمة إلى DBCC SHRINKDATABASE. يستند هذا الحساب على حجم قاعدة البيانات المطلوبة.

    ملاحظة: في بعض الحالات، قد تضطر إلى تنفيذ sp_spaceused @updateusage = true لإعادة حساب المساحة المستخدمة والحصول على تقرير مستكمل. لمزيد من المعلومات حول الإجراء sp_spaceused تخزين العودة إلى "كتب SQL Server عبر إنترنت".

    خذ بعين الاعتبار المثال التالي:
    تفترض هذه بيانات ملفين: ملف البيانات الأساسي (Tempdb.mdf) 100 ميغا بايت وملف السجل (Tempdb.ldf) الذي هو 30 ميغابايت. يفترض هذا sp_spaceused تقارير ملف البيانات الأساسي يحتوي على 60 ميغا بايت من البيانات. أيضا، افترض أنك تريد تقليص ملف البيانات الأساسي إلى 80 ميغا بايت. حساب النسبة المئوية من المساحة الحرة المطلوبة بعد مناسب: 80 ميغابايت-60 ميغابايت = 20 ميغابايت. الآن، تقسيم 20 ميغا بايت قبل 80 ميغابايت = 25 في المائة، وجهازtarget_percent. يتم تقليص ملف سجل المعاملة وفقا لذلك، ترك 20 أو 25 في المائة دون ميغا بايت من المساحة بعد يتم تقليص قاعدة البيانات.
  2. الاتصال ب SQL Server باستخدام "محلل استعلام"، ثم قم بتشغيل أوامر SQL للعمليات التالية:
       dbcc shrinkdatabase (tempdb, 'target percent')    -- This command shrinks the tempdb database					
توجد قيود على استخدام الأمر DBCC SHRINKDATABASE في قاعدة بيانات. لا يمكن أن يكون حجم الهدف البيانات وملفات التسجيل أصغر من الحجم المحدد عندما كانت قاعدة البيانات التي تم إنشاؤها أو أصغر من الحجم الأخيرة التي تم تعيينها بشكل صريح باستخدام عملية ملف حجم تغيير مثل تغيير قاعدة البيانات التي تستخدم خيار تعديل الملف أو الأمر. قيد آخر من SHRINKDATABASE "مخفية" هو حساب المعلمة target_percentage واعتمادها على المساحة الحالية التي يتم استخدامها.

الطريقة الثالثة: استخدام الأمر DBCC SHRINKFILE
استخدم الأمر DBCC SHRINKFILE لملفات بيانات فردية. يوفر DBCC SHRINKFILE مرونة أكثر من DBCC SHRINKDATABASE لأنه يمكنك استخدامه على ملف قاعدة بيانات واحد دون التأثير على الملفات الأخرى التي تنتمي إلى نفس قاعدة البيانات. يتلقى DBCC SHRINKFILE معلمة الحجم الهدف . وهذا الحجم النهائي المطلوب لملف قاعدة البيانات.
  1. تحديد الحجم المطلوب لملف البيانات الأساسي (tempdb.mdf) وملف السجل (templog.ldf) وملفات إضافية تضاف إلى بيانات. تأكد من أن المساحة المستخدمة في الملفات أقل من أو يساوي حجم الهدف المطلوبة.
  2. الاتصال ب SQL Server باستخدام "محلل استعلام"، ثم قم بتشغيل أوامر SQL للعمليات التالية لملفات قاعدة البيانات المحددة التي تريد تقليص:
       use tempdb   go   dbcc shrinkfile (tempdev, 'target size in MB')   go   -- this command shrinks the primary data file   dbcc shrinkfile (templog, 'target size in MB')   go   -- this command shrinks the log file, examine the last paragraph.						
ميزة DBCC SHRINKFILE هو أنه يمكن تقليل حجم الملف إلى حجم أصغر من الحجم الأصلي. يمكن إصدار DBCC SHRINKFILE على أي من ملفات البيانات أو سجل. تم حد من DBCC SHRINKFILE أنه يتعذر إجراء قاعدة البيانات أصغر من حجم قاعدة البيانات.

استخدم الأمر DBCC SHRINKFILE لملفات بيانات فردية. يوفر DBCC SHRINKFILE مرونة أكثر من DBCC SHRINKDATABASE لأنه يمكنك استخدامه على ملف قاعدة بيانات واحد دون التأثير على الملفات الأخرى التي تنتمي إلى نفس قاعدة البيانات. يتلقى DBCC SHRINKFILE معلمة الحجم الهدف . وهذا الحجم النهائي المطلوب لملف قاعدة البيانات.


أخطاء 2501 و 8909 عندما تقوم بتشغيل عمليات التقليص

في حالة استخدام بيانات، ومحاولة تقليص باستخدام الأمر DBCC SHRINKDATABASE أو DBCC SHRINKFILE ، قد تتلقى رسائل مشابهة لما يلي، وفقا لإصدار SQL Server الذي تستخدمه:

SQL Server 2005 والإصدارات الأحدث

الملقم: Msg 8909، 16 المستوى 1 حالة الخط 1 خطأ جدول: كائن معرف 0، معرف الفهرس-1، معرف 0، معرف وحدة تخصيص 0 (النوع المجهول) التقسيم، معرف الصفحة (6:8040) يحتوي على معرف صفحة غير صحيح في رأس الصفحة. باجيد في رأس الصفحة = (0:0).

SQL Server 2000

ملقم: Msg 2501، مستوى 16، حالة 1، البند 1 قد لا تجد جدول باسم '1525580473'. تحقق sysobjects.
الملقم: Msg 8909، مستوى 16, 1 حالة تلف جدول خط 0: 1 معرف كائن, معرف الفهرس 0، الصفحة % معرف S_PGID. باجيد في رأس الصفحة = % S_PGID.
ملاحظات:
  • هذه الأخطاء لا تشير إلى أي تلف بيانات حقيقية. على الرغم من ذلك، يجب أن تدرك أنه قد يكون هناك أسباب أخرى لأخطاء تلف البيانات الفعلية مثل خطأ 8909 وأن هذه الأسباب تتضمن مشاكل النظام الفرعي إدخال/إخراج. ولذلك، إذا حدث الخطأ خارج عمليات التقليص، يجب القيام بالمزيد من التحقيقات.
  • في SQL Server 2005 والإصدارات الأحدث، على الرغم من أن يتم إرجاع رسالة 8909 للتطبيق أو للمستخدم الذي قام بتنفيذ عملية تقليص عمليات التقليص لن يفشل.
  • في SQL Server 2000 والإصدارات السابقة، هذه الأخطاء سوف يؤدي التقليص عمليات فشل. وبالتالي تقليص قاعدة بيانات، عليك إعادة تشغيل SQL Server لإعادة إنشاء بيانات. لمزيد من المعلومات، انقر فوق رقم المقالة التالي لعرضها في "قاعدة معارف Microsoft":
    277848 معرف رسالة الخطأ "جدول معطوب الكائن 0، معرف الفهرس 0، معرف الصفحة" عند تشغيل DBCC DBREINDEX في SQL Server


تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 307487 - آخر مراجعة: 04/25/2016 15:56:00 - المراجعة: 4.0

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2000 64-bit Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Parallel Data Warehouse, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Web, Microsoft SQL Server 2008 Workgroup, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2016 Developer, Microsoft SQL Server 2016 Enterprise, Microsoft SQL Server 2016 Enterprise Core, Microsoft SQL Server 2016 Standard

  • kbsqlsetup kbhowtomaster kbmt KB307487 KbMtar
تعليقات