你目前正处于脱机状态,正在等待 Internet 重新连接

当您使用数据库镜像 SQL Server 2005 中收缩操作不被重复在镜像数据库上

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 937531
症状
当您使用数据库镜像在 Microsoft SQL Server 2005 年时,SQL Server 会自动传播到镜像数据库主体数据库上的所有更改。 但是,如果语句或收缩主体数据库,DBCC SHRINKFILE 语句运行 DBCC SHRINKDATABASE,收缩操作不会重复在镜像数据库上。
原因
数据库镜像将更改仅在检查点之后的物理文件的大小。
替代方法

方法 1

要变通解决此问题,运行下列语句在 master 数据库中创建一个新的存储的过程。 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'

方法 2

收缩主体上的文件后问题手动检查点。
状态
Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的问题。

警告:本文已自动翻译

属性

文章 ID:937531 - 上次审阅时间:05/12/2010 15:56:15 - 修订版本: 2.0

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL 2005 Server Enterprise, 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 KbMtzh
反馈