現在オフラインです。再接続するためにインターネットの接続を待っています

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

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB: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.groupnamefrom 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.groupidgroup 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 pubsgoif convert(int,substring(convert(binary(4), @@microsoftversion),1,1)) = 8begin    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)   )endgoif convert(int,substring(convert(binary(4), @@microsoftversion),1,1)) = 7begin   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   )endgocreate procedure import_extentinfo asdbcc extentinfo('<database name>')goinsert extentinfo exec import_extentinfogoselect [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 - 最終更新日: 12/07/2015 11:28:29 - リビジョン: 9.0

  • kbnosurvey kbarchive kbprb kbmt KB324432 KbMtja
フィードバック