DBCC SHRINKFILE và SHRINKDATABASE l?nh có th? không làm vi?c v? công dân cư thưa th?t văn b?n, ntext, hay h?nh ?nh c?t

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 324432 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

TRI?U CH?NG

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.

GI?I PHÁP

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:
    257425 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:
  1. 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.
  2. 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.
  3. 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.

  4. 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.
  5. 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
  6. 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.
  7. 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.
  8. 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.

THÔNG TIN THÊM

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.

THAM KH?O

Đ? bi?t thêm chi ti?t, b?m vào các bài vi?t s? dư?i đây đ? xem các bài vi?t trong cơ s? ki?n th?c Microsoft:
272220 Kh?c ph?c: Văn b?n/h?nh ?nh d? li?u kho ch?a không khai hoang m?t cách chính xác
308627 Kh?c ph?c: DBCC SHRINKDATABASE ho?c DBCC SHRINKFILE có th? m? r?ng cơ s? d? li?u v?i văn b?n ho?c d? li?u h?nh ?nh

Thu?c tính

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

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com