该DBCC SHRINKFILE
命令将从主体镜像到镜像数据库。这是一些证据。
在主体上创建一个示例数据库:
create database MirroredDb;
go
使用NORECOVERY
以下命令从备份创建相同的数据库:
restore database MirroredDb
from disk = '\\backupdir\MirroredDb.bak'
with norecovery;
go
设置镜像会话,但是选择哪种方式。
在主体数据库上,查看数据库文件大小:
use MirroredDb;
go
select
name,
size
from sys.database_files;
我的结果集如下所示:
name size
MirroredDb 392
MirroredDb_log 104
在镜像数据库上,创建快照并查看相同的信息:
create database MirroredDbss
on
(
name = 'MirroredDb',
filename = 'c:\sqlserver\MirroedDb.ss'
)as snapshot of MirroredDb;
use MirroredDbss;
go
select
name,
size
from sys.database_files;
我的结果集如下所示:
name size
MirroredDb 392
MirroredDb_log 104
现在在主体数据库上增长事务日志文件(我将其增加到1 GB):
alter database MirroredDb
modify file
(
name = MirroredDb_log,
size = 1GB
);
go
查看主体数据库的事务日志大小,我们现在看到调整后的大小:
use MirroredDb;
go
select
name,
size
from sys.database_files;
我的结果集如下所示:
name size
MirroredDb 392
MirroredDb_log 131072
在镜像数据库上创建另一个快照,然后查看其中的事务日志文件大小:
create database MirroredDbss2
on
(
name = 'MirroredDb',
filename = 'c:\sqlserver\MirroedDb2.ss'
)as snapshot of MirroredDb;
use MirroredDbss2;
go
select
name,
size
from sys.database_files;
我的结果集如下所示:
name size
MirroredDb 392
MirroredDb_log 131072
现在DBCC SHRINKFILE
对主体执行:
use MirroredDb;
go
dbcc shrinkfile('MirroredDb_log', 0);
go
select
name,
size
from sys.database_files;
我的结果集如下:
name size
MirroredDb 392
MirroredDb_log 104
在镜像数据库上创建第三张也是最后一张快照,然后查看其大小:
create database MirroredDbss3
on
(
name = 'MirroredDb',
filename = 'c:\sqlserver\MirroedDb3.ss'
)as snapshot of MirroredDb;
use MirroredDbss3;
go
select
name,
size
from sys.database_files;
我得到以下结果集:
name size
MirroredDb 392
MirroredDb_log 104
因此,如您在此处看到的,该DBCC SHRINKFILE
命令实际上已镜像到镜像数据库。