SQL Server 2005의 데이터베이스 미러링을 사용할 때 미러 데이터베이스에서 축소 작업이 중복 되지 않습니다.

증상

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

주 파일 축소 후 수동 검사점을 발급 합니다.

상태

Microsoft는 이 문제가 '적용 대상' 섹션에 나열된 Microsoft 제품의 문제임을 확인했습니다.
속성

문서 ID: 937531 - 마지막 검토: 2017. 2. 7. - 수정: 1

피드백