DBCC SHRINKFILE và DBCC SHRINKDATABASE l?nh s?
không di chuy?n d? li?u và làm gi?m kích thư?c t?p tin n?u các EstimatedPages có giá tr? b?ng các MinimumSize giá tr? đư?c thông báo khi l?nh hoàn t?t. V?
S?a đ?i d? li?u truy v?n trên b?ng v?i các lo?i d? li?u nh? phân đ?i tư?ng l?n (BLOB)
(văn b?n, ntext, h?nh ?nh), nó có th? có nhi?u th?ng nh?t extents c?p phát đư?c
thưa th?t dân cư v?i các d? li?u (ví d?, ch? có 1 c?a 8 trang mà các
đi?u khi?n m?c đ? đư?c c?p phát), mà s? gây ra DBCC SHRINKFILE và các
DBCC SHRINKDATABASE l?nh đ? over-estimate s? EstimatedPages, và các l?nh th?c hi?n các ho?t đ?ng thu nh?.
Thông thư?ng, trong trư?ng h?p mà hành vi này có kinh nghi?m, kích thư?c c?a m?t đ?y đ?
sao lưu cơ s? d? li?u là đ?n 8 l?n nh? hơn so v?i các kích thư?c c?a các t?p tin c?a các
cơ s? d? li?u sau khi ch?y m?t DBCC SHRINKFILE trên các t?p tin cơ s? d? li?u.
N?u các b?ng b? ?nh hư?ng không ph?i liên t?c
tr?c tuy?n trong khi b?n kh?c ph?c t?nh tr?ng này, b?n có th? s? d?ng b?t k? m?t trong nh?ng đi?u sau đây
cách gi?i quy?t đ? gi?i quy?t v?n đ? này:
S? d?ng m?t ch?n thành tuyên b? đ? chuy?n toàn b? b?ng đ?
m?t b?ng m?i trong cùng m?t cơ s? d? li?u. Th? b?ng ban đ?u, và sau đó ch?y m?t DBCC
SHRINKFILE tuyên b?. Đ?i tên b?ng m?i ban đ?u b?ng
Tên.
S? d?ng m?t ch?n thành tuyên b? đ? chuy?n toàn b? b?ng đ?
m?t b?ng m?i trong cơ s? d? li?u khác nhau. Truncate ban đ?u b?ng, và sau đó ch?y
m?t tuyên b? DBCC SHRINKFILE. Chuy?n d? li?u tr? l?i v?i b?n g?c
b?ng.
S? d?ng chương tr?nh sao chép hàng lo?t đ? sao chép b?ng ra trong b?n đ?a
ch? đ?. K?ch b?n trong b?ng, và sau đó th? b?ng hi?n có. Ch?y m?t DBCC
SHRINKFILE tuyên b?. T?o ra m?t b?ng m?i, và sau đó s? d?ng chương tr?nh sao chép s? lư?ng l?n đ?
sao chép d? li?u tr? l?i vào b?ng.
S? d?ng d? li?u chuy?n đ?i d?ch v? (DTS) đ? chuy?n các
toàn b? cơ s? d? li?u vào cơ s? d? li?u m?i. SQL Server 7.0 d? li?u bi?n đ?i d?ch v?
có th? không chuy?n văn b?n và h?nh ?nh d? li?u lâu hơn đó là hơn 64 KB m?t cách chính xác. Đi?u này
v?n đ? không áp d?ng đ?i v?i SQL Server 2000 b?n d? li?u bi?n đ?i
D?ch v?.Đ? bi?t thêm chi ti?t, b?m vào
s? bài vi?t dư?i đây đ? xem bài vi?t trong cơ s? ki?n th?c Microsoft:
Kh?c ph?c: DTS đ?i tư?ng chuy?n giao không chuy?n BLOB d? li?u l?n hơn 64
B?n có th? t?m văn b?n và h?nh ?nh c?t đư?c
l?n hơn 64 KB v?i truy v?n sau đây:
SELECT MAX (DATALENGTH (TextImageColumn)) FROM TableName
N?u d? li?u văn b?n và h?nh ?nh l?n hơn 64 KB, vi?c chuy?n giao
truncates các d? li?u và không tăng b?t k? l?i ngo?i tr? trong các DTS đăng nh?p t?p tin. N?u
b?n có d? li?u văn b?n ho?c h?nh ?nh l?n hơn 64 KB, s? d?ng các thông tin trong các
Th? ba đ?n m?c cho các b?ng có d? li?u văn b?n ho?c h?nh ?nh. Sau đó, s? d?ng DTS
Đ?i v?i ph?n c?n l?i c?a các m?c trong cơ s? d? li?u.
N?u cơ s? d? li?u ph?i đư?c tr?c tuy?n ho?c kích thư?c c?a cơ s? d? li?u
quá l?n đ? di chuy?n d? li?u vào m?t t?p tin bên ngoài ho?c cơ s? d? li?u khác, b?n có th?
s? d?ng l?nh DBCC SHRINKFILE v?i tùy ch?n EMPTYFILE. S? d?ng công vi?c này
xung quanh, h?y làm theo các bư?c sau:
N?u b?n đang ch?y Microsoft SQL Server 7.0 Service Pack 3,
r? vào d?u v?t c? 1180 và 1197.
N?u b?n đang ch?y Microsoft SQL Server 7.0 Service Pack 3
xây d?ng 7.00.987, ho?c sau này, bao g?m c? Service Pack 4, b?t water c?
năm 1180.
N?u b?n đ? lan r?ng cơ s? d? li?u trên m?t s? t?p tin cho
ho?c các v?n đ? v? tr? ? đ?a ho?c l? do hi?u su?t, t?o ra 1 ho?c nhi?u b? sung
tác ph?m trong cơ s? d? li?u b?ng cách s? d?ng l?nh thay đ?i cơ s? d? li?u v?i m?t t?ng kích thư?c
so sánh v?i k?t qu? c?a truy v?n sau đây.
select 'size in MB'=ceiling(sum(ei.pg_alloc)/128.000), sfg.groupname
from extentinfo ei inner join sysfiles sf on ei.[file_id] = sf.fileid and ei.[file_id] != 1
inner join sysfilegroups sfg on sf.groupid = sfg.groupid
group by sfg.groupname
LƯU ?: Truy v?n trư?c s? d?ng b?ng đư?c t?o ra b?i các truy v?n
trong ph?n "Thông tin thêm" c?a bài vi?t này. Ngoài ra, kích thư?c t?p tin
T?ng s? đư?c chia nh? theo filegroup.
Ch?y m?t truy v?n DBCC SHRINKFILE, v?i các tùy ch?n EMPTYFILE như
các tham s? th? hai, m?i h? sơ có dân cư thưa th?t blob đ?ng ph?c
extents.
B?n có th? theo d?i s? ti?n b? c?a các DBCC SRHINKFILE l?nh b?ng cách t?o ra m?t ho?c nhi?u b?ng v?i lư?c đ? tương t? như
các extentinfo b?ng t? ph?n "Thông tin thêm" bài vi?t này. Sau đó
ch?y m?t "CHÈN.. EXEC import_extentinfo"truy v?n đ? cư trú d? li?u đ? bàn m?i. S? d?ng sau đây
truy v?n đ? phân tích các k?t qu?:
select [file_id], 'page count'=sum(pg_alloc), 'min page'=min(page_id), 'max page'=max(page_id) from extentinfo group by [file_id]
Ngoài ra, b?n có th? s? d?ng truy v?n sau đây đ? theo d?i khi s?
DBCC EXTENTINFO l?nh đư?c ch?y n?u các b?ng b?t đ?u v?i cùng m?t khuôn m?u c?a
ch? cái và đư?c t?o ra g?n đó như là l?nh DBCC EXTENTINFO:
select crdate, [name] from sysobjects where type = 'U' and [name] like 'extent%' order by crdate
Khi đ? hoàn t?t các truy v?n DBCC SHRINKFILE, ch?y m?t ALTER
Truy v?n cơ s? d? li?u đ? lo?i b? các t?p tin c? t? cơ s? d? li?u.
B?n có th? có th? lo?i b? không gian b? sung b?ng cách ch?y m?t DBCC
SHRINKFILE truy v?n v?i các tùy ch?n TRUNCATEONLY trên các t?p tin m?i đư?c
thành l?p năm bư?c 3.
N?u b?n đang ch?y Microsoft SQL Server 7.0, t?t các
water c? b?n b?t lên trong bư?c 1 và 2.
B?n có th? ch?y truy v?n Transact SQL sau đây t? b?t k? truy v?n
công c?, ch?ng h?n như truy v?n phân tích, n?u b?n đang đăng nh?p như là m?t ngư?i dùng có Ilos quy?n. B?n ch?y truy v?n Transact SQL trên SQL Server đ? xác đ?nh
N?u l?nh DBCC SHRINKDATABASE và ch? huy DBCC SHRINKFILE không th?
thu nh? t?p v? c?a dân cư thưa th?t BLOB th?ng nh?t extents.
LƯU ?: B?n ph?i c?p nh?t các chu?i '<database name="">' tên
v?n đ? c?a cơ s? d? li?u, và kèm theo tên trong duy nh?t báo giá
nh?n hi?u.</database>
use pubs
go
if convert(int,substring(convert(binary(4), @@microsoftversion),1,1)) = 8
begin
create table extentinfo
(
[file_id] smallint,
page_id int,
pg_alloc int,
ext_size tinyint,
obj_id int,
index_id tinyint,
pfs_bytes varbinary(10)
)
end
go
if convert(int,substring(convert(binary(4), @@microsoftversion),1,1)) = 7
begin
create table extentinfo
(
[file_id] smallint,
page_id int,
pg_alloc int,
ext_size tinyint,
obj_id int,
index_id tinyint,
pfs_bytes varbinary(10),
avg_used tinyint
)
end
go
create procedure import_extentinfo as
dbcc extentinfo('<database name>')
go
insert extentinfo exec import_extentinfo
go
select [file_id],obj_id, index_id, ext_size, 'actual extent count'=count(*), 'actual page count'=sum(pg_alloc),
'possible extent count'=ceiling(sum(pg_alloc)*1.0/ext_size),
'possible extents / actual extents' = (ceiling(sum(pg_alloc)*1.00/ext_size)*100.00) / count(*)
from extentinfo where ext_size != 1 and index_id = 255
group by [file_id],obj_id, index_id, ext_size
having count(*)-ceiling(sum(pg_alloc)*1.0/ext_size) > 0
order by obj_id, index_id, [file_id]
N?u b?n nh?n th?y các k?t qu? hàng t? truy v?n cu?i mà có index_id giá tr? c?a 255, và các m?c đ? có th? / th?c t? m?c đ? c?t là ít hơn 75, cơ s? d? li?u này có thưa th?t
dân cư BLOB extents và có th? đư?c gi?m kích thư?c b?ng phương pháp đư?c di?n t? trong
"Gi?i quy?t" ph?n c?a bài vi?t này.
LƯU ?: Truy v?n này d?a vào các ch?c năng c?a DBCC EXTENTINFO
b? ch? huy. Không s? d?ng l?nh DBCC EXTENTINFO bên ngoài t?nh tr?ng này, b?i v?
các ch?c năng có th? thay đ?i ho?c th?m chí b? lo?i b? kh?i Phiên b?n tương lai c?a
Microsoft SQL Server.
ID c?a bài: 324432 - L?n xem xét sau cùng: 27 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
Microsoft SQL Server 2000 Standard Edition
Microsoft SQL Server 7.0 Standard Edition
T? khóa:
kbprb kbmt KB324432 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:324432