Операция сжатия не дублируется в зеркальной базе данных при использовании зеркального отображения базы данных в SQL Server 2005

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:937531
Проблема
При использовании зеркального отображения базы данных Microsoft SQL Server 2005, SQL Server автоматически передает все изменения в основной базе данных на зеркальную базу данных. Тем не менее если инструкция DBCC SHRINKDATABASE инструкции или инструкции DBCC SHRINKFILE сжать основной базы данных, операция сжатия не дублируется в зеркальной базе данных.
Причина
Зеркальное отображение базы данных будет изменен размер физического файла только после контрольной точки.
Временное решение

Способ 1.

Чтобы обойти эту проблему, выполните следующие инструкции для создания новой хранимой процедуры в базе данных master. Затем с помощью этой хранимой процедуры для основной базы данных вместо выполнения инструкции DBCC SHRINKDATABASE или DBCC SHRINKFILE оператора уменьшения.
     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
Например, если вы хотите сжатьmydbБаза данных, выполните следующую инструкцию.
EXEC sp_shrink_mirrored_database 'mydb'

Способ 2

Выполните вручную контрольной точки после сжатия файлов на основном сервере.
Статус
Корпорация Майкрософт подтверждает, что это проблема в продуктах Майкрософт, перечисленных в разделе «Применяется к»..

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 937531 — последний просмотр: 11/28/2010 19:39:00 — редакция: 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

  • kbtshoot kbexpertiseadvanced kbsql2005engine kbprb kbmt KB937531 KbMtru
Отзывы и предложения