適用先
SQL Server 2008 Service Pack 3 SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2008 R2 Service Pack 2 SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

現象

Microsoft SQL Server 2008、SQL Server 2008 R2、SQL Server 2012、または SQL Server 2014 で、ラージオブジェクト (LOB) 列を含むテーブルがあることを前提としています。 Lob データのサイズが小さい LOB 列を更新して、次のメソッドを使用して未使用の領域を再利用する場合。

  • DBCC SHRINKDATABASE/DBCC SHRINKFILE

  • インデックスの再編成を変更する (LOB_COMPACTION = ON)

この場合、未使用の領域を解放することはできません。

SQL Server 用の新しい累積更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正が含まれています。 SQL Server の最新の累積的な更新プログラムを確認します。

回避策

この問題を回避するには、次の回避策を使用します。

  • すべての行を新しいテーブルにエクスポートし、行を元の位置に戻します。 LOB データを再編成し、未使用の領域を解放します。

  • [DBCC SHRINKFILE with EMPTYFILE] オプションを使用して、新しく追加されたデータファイルにすべてのデータを移動し、古いデータファイルを削除します。 これにより、使用されていない領域を解放して LOB データを再編成します。

詳細情報

次の例では、TSQL table_name sp_spaceused コマンドを使用して、使用されていないスペースを示しています。これには、lob データのサイズが小さい lob 列を更新する前と後に、次のようにします。更新する前に、次のように

氏名

保存

データ

index_size

しない

table_name

1000

261072 KB

261056 KB

16 KB

0 KB

更新後の操作:

氏名

保存

データ

index_size

しない

table_name

1000

261072 KB

199672 KB

16 KB

61384 KB

状態

マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。