如何收缩2005 Mirror数据库
来源:互联网 发布:国产linux操作系统 编辑:程序博客网 时间:2024/04/29 12:47
在论坛看到收缩主数据库在Mirror上没有效果的问题。以前我也认为在主数据库上执行的DBCC Shirnkfile命令会在Mirror数据库上重做,所以收缩主数据库可以导致Mirror数据库跟着收缩。事实不是。从MS网站找到的资料:
When you use databasemirroring in Microsoft SQL Server 2005, SQL Server automatically propagates anychanges on the principal database to the mirror database. However, if you runthe DBCC SHRINKDATABASE statement or the DBCC SHRINKFILE statements to shrinkthe principal database,theshrink operation is not duplicated on the mirror database.
CAUSE:Database mirroring will change the physical file sizes only after a checkpoint.
在主数据库上执行DBCC SHRINKDATABASE或者DBCC SHRINKFILE的命令,收缩的操作不会在Mirror数据库上重做。原因是:Mirror数据库只在checkpoint动作后才会修改物理文件的大小。
有几个办法可以解决这个问题:
1. 在Master数据库执行下面的命令创建存储过程,在主数据库上运行创建的存储过程。
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@dbnamesysname,@target_percent int= null
as
begin
declare@filenamesysname
declare@filesizeint
declare@sqlnvarchar(4000)
if @target_percent is null
dbccshrinkdatabase(@dbname)
else
dbccshrinkdatabase(@dbname,@target_percent)
declareccursorfor
select[name],[size]from sys.master_fileswheretype=0anddatabase_id = db_id(@dbname)
open c
fetch next from cinto@filename,@filesize
while @@fetch_status=0
begin
set @filesize=(@filesize+1)*8
set @sql='alter database ['+@dbname + '] modify file ( name='
+ @filename + ', size='+cast(@filesizeasnvarchar)+'kb )'
executesp_executesql@sql
fetchnextfromc into @filename,@filesize
end
close c
deallocatec
end
go
2. 在主数据库上执行收缩命令之后手动允许checkpoint命令。
3. 可以考虑做Failover将辅助的直接变成主的,执行收缩命令。
另外建议经常对数据库进行日志备份,如果发现日志文件增长的快可以考虑增加备份的频率,这样可以导致日志空间重用,从而减少日志文件的增长。
另外在2008版本上测试不会有这个问题,收缩的命令可以成功在Mirror上面起作用,所以这个现象可能只限于2005的版本。
- 如何收缩2005 Mirror数据库
- 如何收缩数据库
- SQLSERVER 2000 如何收缩数据库
- 如何收缩 SQL Server 中的 Tempdb 数据库
- 如何收缩 SQL Server 中的 Tempdb 数据库
- 如何收缩 SQL Server 中的 Tempdb 数据库
- 如何收缩超大的SharePoint_Config数据库
- sql2008中如何收缩数据库日志文件
- SQL Server 2005 收缩数据库
- sql server 2005 收缩数据库
- 收缩数据库
- 收缩数据库
- 收缩数据库
- 收缩数据库
- 收缩数据库
- 收缩数据库
- 收缩数据库
- 收缩数据库
- 第八章 例8.21
- iOS的开源Logger框架使用
- QML 中调用本地标准的对话框如:QFileDialog QFontDialog
- iOS Client 与WebSocket 通信(二)
- JAVA之URL
- 如何收缩2005 Mirror数据库
- VC 获取控制台窗口的句柄(hWnd)
- 一步一步学Entity FrameWork 4(1)
- VC++无效化控制台窗口的关闭按钮(菜单)
- VC++运行时更改命令行窗体图标
- VC++如何尽量压缩控制台程序的大小
- C# 用鼠标拖动无边框窗体
- 【转】VC++控制台字体大小相关操作
- 【转】VC++截取用户点击关闭按钮的消息