DBCC SHRINKFILE および SHRINKDATABASE コマンド付けますテキスト、ntext、または image 列のため機能しません。

文書翻訳 文書翻訳
文書番号: 324432
すべて展開する | すべて折りたたむ

現象

DBCC SHRINKFILE および DBCC SHRINKDATABASE コマンドをします。データを移動し、場合のファイル サイズを小さくしない、 EstimatedPages 値と等しい、 MinimumSize コマンドが完了したときに報告される値です。ためバイナリ ラージ オブジェクト (BLOB) データ型を持つテーブルでのデータ修正クエリ(テキスト, ntext 型, イメージ) が割り当てられた多く単一エクステントことは可能です一時的にデータを入力 (、ページの唯一の 1、8 など、コントロールのエクステント割り当てられます)、DBCC SHRINKFILE が生じますと、DBCC SHRINKDATABASE コマンドの数を over-estimate EstimatedPages、およびコマンドは、圧縮操作を実行しないでください。この現象が発生は、通常、場合の完全なサイズデータベースのバックアップが最大 8 倍小さいファイルのサイズよりも、データベースのデータベース ファイルには、DBCC SHRINKFILE を実行するとします。

解決方法

場合は、影響を受けるテーブルを連続的にする必要はありません。このような状況を解決するには、オンラインするには、次のいずれかを使用します。この問題を解決する回避策は。
  • SELECT INTO ステートメントを使用してテーブル全体を転送するのには新しいテーブルが同じデータベースにします。元のテーブルをドロップし、DBCC を実行SHRINKFILE ステートメントです。元のテーブルに新しいテーブルの名前を変更します。[名前] します。
  • SELECT INTO ステートメントを使用してテーブル全体を転送するのには別のデータベースに新しいテーブル。元のテーブルの切り捨てし、実行DBCC SHRINKFILE ステートメント。元にデータを転送します。テーブルです。
  • 一括コピー プログラムを使用して、テーブルがネイティブをコピーするのにはモードです。表には、スクリプトを作成し、既存のテーブルをドロップします。DBCC を実行します。SHRINKFILE ステートメントです。新しいテーブルを作成し、一括コピー プログラムを使用してくださいテーブルにデータをコピーします。
  • データ変換サービス (DTS) を使用して転送するのには新しいデータベースのデータベース全体。SQL Server 7.0 のデータ変換サービス64 KB を超えるが正常でテキストおよびイメージ データより長期間に転送可能性があります。これ問題は、SQL Server 2000年バージョンのデータ変換には適用されません。サービスです。詳細についてをクリックします。「サポート技術情報」資料を参照するには、次の文書番号。
    257425 FIX DTS のオブジェクト転送の BLOB データが 64 を超えてに転送されません。
    Text および image 列を検索することができます。次のクエリでは、64 KB よりも大きい。
    SELECT MAX (DATALENGTH (TextImageColumn)) FROM TableName
    場合は、テキストおよびイメージ データが 64 kb を超える転送されます。データが切り捨てられ、DTS ログ ファイル以外に、エラーが発生しません。Iftext または image データの 64 KB よりも大きいの情報を使用して、text または image データを持つテーブルの 3 番目の箇条書き項目。次に、DTS を使用してください。データベース内の項目の残りの部分を。
場合は、データベースをオンラインにする必要がありますか、データベースのサイズ外部ファイルや別のデータベースにデータを移動するには大きすぎる、あります。DBCC SHRINKFILE コマンドを使用して EMPTYFILE オプションを使用します。この作業を使用するには次の手順を実行します。
  1. Microsoft SQL Server 7.0 Service Pack 3 を実行している場合は、1180 と 1197年のトレース フラグを有効にします。
  2. 場合は、Microsoft SQL Server 7.0 Service Pack 3 を実行します。7.00.987、ビルドまたは後で Service Pack 4 を含む、トレース フラグを有効にします。1180。
  3. 場合は、データベースの複数のファイルに広がっています1 作成するドライブ容量の問題またはパフォーマンス上の理由のいずれかまたは複数の追加合計サイズと、ALTER DATABASE コマンドを使用して、データベース内のファイル次のクエリの結果と同じです。
    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
    メモ: は、上記のクエリでクエリの作成表を使用してください。この資料の「関連情報」セクションでします。さらに、ファイルのサイズ合計によってグループに分類されます。

  4. DBCC SHRINKFILE クエリを実行して EMPTYFILE オプションとしてblob の統一が作成できるファイルごとに、2 番目のパラメーター範囲を返します。
  5. 進行状況を追跡することができます、 DBCC SRHINKFILE 1 つまたは複数のテーブルと同じスキーマで作成することによってコマンドは、 extentinfo この資料の「関連情報」セクションからのテーブルです。[[挿入] を実行します。EXEC import_extentinfo"新しいテーブルにデータを表示するクエリです。次を使用します。結果を分析するには、[クエリ] をクリック。
    select [file_id], 'page count'=sum(pg_alloc), 'min page'=min(page_id), 'max page'=max(page_id) from extentinfo group by [file_id]
    次のクエリを使用してタイミングを追跡するのにはさらに、DBCC EXTENTINFO コマンドが実行されたのと同じパターンで、テーブルを開始した場合文字であり、同時に、DBCC EXTENTINFO コマンドの近くを作成しました。
    select crdate, [name] from sysobjects where type = 'U' and [name] like 'extent%' order by crdate
  6. DBCC SHRINKFILE のクエリが完了するは、変更を実行します。データベース クエリを使用して、データベースから古いファイルを削除するのには。
  7. DBCC を実行することによって追加のスペースを削除することができます。SHRINKFILE クエリ TRUNCATEONLY オプションされた新しいファイルを使用手順 3 で作成します。
  8. Microsoft SQL Server 7.0 を実行している場合は、オフ、トレース フラグ 1 または 2 の手順で有効にします。

詳細

任意のクエリから次の Transact SQL クエリを実行できます。クエリ アナライザーを持つユーザーとしてログオンしている場合などのツール システム管理者 権利。SQL を確認するサーバーに、Transact SQL クエリを実行します。場合は、DBCC SHRINKDATABASE コマンドや DBCC SHRINKFILE コマンドことはできません。BLOB の付けます単一エクステントのファイルを圧縮します。

メモ'<database name="">' の文字列名を更新する必要があります。問題のデータベース、および名前を単一引用符で囲む商標</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]
結果の行最後のクエリからが表示される場合 index_id 255 の値、 可能なエクステント/実際エクステント 列は 75 未満か、このデータベースが部分的BLOB のエクステントを作成し、説明する方法でサイズを減らすことができますこの資料の「解決方法」セクション。

メモ: DBCC EXTENTINFO の機能このクエリを使用します。コマンドです。DBCC EXTENTINFO コマンド以外は、このような状況はために使用しないでください。機能を変更することができますかの将来のバージョンからも削除します。Microsoft SQL Server。

関連情報

詳細についてをクリックして、マイクロソフト サポート技術記事を表示するのには「以下の数値。
272220 FIX が正しく解放されないテキスト/イメージ データのストレージ容量
308627 修正: DBCC SHRINKDATABASE または DBCC SHRINKFILE データベースのテキスト データやイメージ データを展開可能性があります。

プロパティ

文書番号: 324432 - 最終更新日: 2011年7月27日 - リビジョン: 9.0
キーワード:?
kbprb kbmt KB324432 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:324432
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

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