لا يتم تكرار عملية تقليص على قاعدة بيانات متطابقة عند استخدام النسخ المتطابق لقاعدة البيانات في SQL Server 2005

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

اضغط هنا لرابط المقالة باللغة الانجليزية937531
الأعراض
عند استخدام النسخ المتطابق لقاعدة البيانات في SQL Server 2005 نشر SQL Server تلقائياً أية تغييرات على قاعدة البيانات الرئيسي إلى قاعدة بيانات متطابقة. ومع ذلك، إذا قمت بتشغيل SHRINKDATABASE DBCC عبارة أو عبارات SHRINKFILE DBCC لتقليص قاعدة البيانات الأساسي لا يتم تكرار عملية تقليص على قاعدة بيانات متطابقة.
السبب
سيتم تغيير قاعدة البيانات النسخ المتطابق أحجام الملفات الفعلية فقط بعد نقطة اختبار.
الحل البديل

الطريقة الأولى

كمحاولة للتغلب على هذه المشكلة قم بتشغيل العبارات التالية لإنشاء إجراء جديد مخزن في قاعدة البيانات الرئيسية. Then, use this stored procedure to shrink the principal database instead of running the DBCC SHRINKDATABASE statement or the DBCC SHRINKFILE statement.
     use master       go       if object_id ('sp_shrink_mirrored_database', 'P') is not null          drop proc sp_shrink_mirrored_database        go       create procedure sp_shrink_mirrored_database @dbname sysname, @target_percent int = null       as       begin         declare @filename sysname         declare @filesize int         declare @sql nvarchar(4000)                  if @target_percent is null           dbcc shrinkdatabase (@dbname)         else            dbcc shrinkdatabase (@dbname, @target_percent)         declare c cursor for          select [name], [size] from sys.master_files where type=0 and database_id = db_id (@dbname)         open c         fetch next from c into @filename, @filesize         while @@fetch_status=0         begin           set @filesize=(@filesize+1)*8           set @sql='alter database [' + @dbname + '] modify file ( name='              + @filename + ', size=' + cast(@filesize as nvarchar) + 'kb )'           execute sp_executesql @sql           fetch next from c into @filename, @filesize         end         close c         deallocate c       end       go
For example, if you want to shrink the mydb database, run the following statement.
EXEC sp_shrink_mirrored_database 'mydb'

الطريقة الثانية

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

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

خصائص

رقم الموضوع: 937531 - آخر مراجعة: 05/12/2010 15:56:15 - المراجعة: 2.0

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Standard X64 Edition, Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems

  • kbmt kbtshoot kbexpertiseadvanced kbsql2005engine kbprb KB937531 KbMtar
تعليقات