ABCという名前のテーブルがあります。このテーブルには、次のように定義された列がありますXYZ
varchar(8000).
この列には、SOAP エラー リクエストを格納しています。
私の問題は、SOAP エラー要求の長さを超えていることです。
8000 (to be accurate it is now 16000).
の最大長varcharは 8000 であると読んだので、質問は、列 XYZ の長さを 16000 に増やすにはどうすればよいかということです。
ABCという名前のテーブルがあります。このテーブルには、次のように定義された列がありますXYZ
varchar(8000).
この列には、SOAP エラー リクエストを格納しています。
私の問題は、SOAP エラー要求の長さを超えていることです。
8000 (to be accurate it is now 16000).
の最大長varcharは 8000 であると読んだので、質問は、列 XYZ の長さを 16000 に増やすにはどうすればよいかということです。
本当に 8000 文字以上が必要な場合は、VARCHAR(MAX)最大 2 GB のテキストを保存できる whichを使用する必要があります。
XYZ varchar(max)
これにより、最大 20 億の文字が得られます。これは、レオ トルストイの戦争と平和の約 200 倍に相当します。ほとんどの場合、これで十分です。
注: SOAP リクエストを受け取った場合、それは適切にフォーマットされた XML である可能性が高いです。その場合、XMLSQL Server 2005以降のデータ型を使用することもできます。また、最大 2 GB のデータを保存しますが、プレーンよりも効率的に保存varchar(max)できます。また、XPath/XQuery を実行してデータからビットを取得できます。
だから私はあなたが使用することをお勧めします:
XYZ XML
使用するvarchar(max)
varchar(n)可変長の非 Unicode 文字列データです。n文字列の長さを定義し、1 ~ 8,000 の値を指定できます。max は、最大ストレージ サイズが 2^31-1 バイト (2 GB) であることを示します。
格納サイズは、入力されたデータの実際の長さ + 2 バイトです。
参照用にテキスト データ型を使用http://msdn.microsoft.com/en-us/library/ms189574(v=sql.90).aspx
--Check this example...
create table t1( i varchar(max))
create table t2( i varchar(8000))
DECLARE @String1 VARCHAR(MAX)
set @String1 = 'Hello'
declare @i int
set @i = 1
while ( @i < 50000)
begin
set @String1 = @String1 + 'world'
set @i = @i +1
end
select len(@String1)
insert into t1 select @String1 -- will succeed
insert into t2 select @String1 -- will fail
SELECT LEN(i) from t1
SELECT LEN(i) from t2
長いテキストを処理するデータ型を使用することから始めてみてください。「文字」が頭に浮かびます。