「レプリケートされる LOB データ (......) の長さが、構成した最大長 65536 を超えています。」エラーが発生し、データベースにレコードの挿入ができない - SQL Server

SQL Serverで「レプリケートされる LOB データ (164200) の長さが、構成した最大長 65536 を超えています。・・・」のエラーの対処に関して紹介します。

現象

SQL Server にレコードをinsertすると、下記のエラーが発生します。
レプリケートされる LOB データ (nnnnnn) の長さが、構成した最大長 65536 を超えています。ストアドプロシージャ sp_configure を使用して、 max text repl size オプションで構成されている最大値 (規定値は 65536) を増やしてください。値を -1 にすると、データ型による制限以外の制限がなくなります。


Image, Text, その他バイナリなど、長いデータを挿入した場合に発生します。

対策

max text repl size オプションを変更します。

対象のデータベースで、下記のSQLを実行します。
EXEC sp_configure 'show advanced options', 1 ;   
EXEC sp_configure 'max text repl size', -1; 
RECONFIGURE;   

設定を反映するために、RECONFIGURE ステートメントの実行が必要です。

実行結果

実行されると下図の結果となります。

補足

データベースを明示的に指定する場合は、下記のコードを利用します。
USE [データベース名];  
GO  
EXEC sp_configure 'show advanced options', 1 ;   
RECONFIGURE ;   
GO  
EXEC sp_configure 'max text repl size', (サイズ) ;   
GO  
RECONFIGURE;   
GO
USE iPentecSandbox ;  
GO  
EXEC sp_configure 'show advanced options', 1 ;   
RECONFIGURE ;   
GO  
EXEC sp_configure 'max text repl size', -1 ;   
GO  
RECONFIGURE;   
GO

SQL Server Management Studio で変更する場合

SQL Server Management Studio で'max text repl size'の値を変更する場合は、SQL Server Management Studioを起動し、左側のオブジェクトエクスプローラでサーバーのノードをクリックして選択し、右クリックします。下図のポップアップメニューが表示されるので、メニューの[プロパティ]をクリックします。


[サーバーのプロパティ]ダイアログが表示されます。


左側の[ページの選択]リストボックスから[詳細設定]の項目をクリックします。下図の画面が表示されます。


右側の値のリストの[テキストレプリケーションの最大サイズ]の項目の値を変更します。下図は"-1"に設定することで、制限なしの設定にしています。

動作確認

コマンド実行後、データベースにレコードを挿入してエラーが発生しないか確認します。

max text repl size オプションとは

max text repl size オプションは、INSERT, UPDATE, WRITETEXT, UPDATETEXT の各ステートメント内で、レプリケート対象列、キャプチャ対象列でデータ型が、text 型, ntext 型, varchar(max) 型, nvarchar(max) 型, varbinary(max) 型, xml 型, image 型の最大データサイズを指定するオプションです。
サイズは、バイト単位で指定し、デフォルト値は65,535です。値が-1の場合は、制限なしとなります。

著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
最終更新日: 2024-01-07
作成日: 2016-10-24
iPentec all rights reserverd.