7

ABCという名前のテーブルがあります。このテーブルには、次のように定義された列がありますXYZ

varchar(8000).

この列には、SOAP エラー リクエストを格納しています。

私の問題は、SOAP エラー要求の長さを超えていることです。

8000 (to be accurate it is now 16000). 

の最大長varcharは 8000 であると読んだので、質問は、列 XYZ の長さを 16000 に増やすにはどうすればよいかということです。

4

5 に答える 5

22

本当に 8000 文字以上が必要な場合は、VARCHAR(MAX)最大 2 GB のテキストを保存できる whichを使用する必要があります。

XYZ varchar(max)

これにより、最大 20 億の文字が得られます。これは、レオ トルストイの戦争と平和の約 200 倍に相当します。ほとんどの場合、これで十分です。

注: SOAP リクエストを受け取った場合、それは適切にフォーマットされた XML である可能性が高いです。その場合、XMLSQL Server 2005以降のデータ型を使用することもできます。また、最大 2 GB のデータを保存しますが、プレーンよりも効率的に保存varchar(max)できます。また、XPath/XQuery を実行してデータからビットを取得できます。

だから私はあなたが使用することをお勧めします:

XYZ XML
于 2013-01-08T06:01:24.197 に答える
4

使用するvarchar(max)

varchar(n)可変長の非 Unicode 文字列データです。n文字列の長さを定義し、1 ~ 8,000 の値を指定できます。max は、最大ストレージ サイズが 2^31-1 バイト (2 GB) であることを示します。

格納サイズは、入力されたデータの実際の長さ + 2 バイトです。

于 2013-01-08T06:01:43.750 に答える
0

参照用にテキスト データ型を使用http://msdn.microsoft.com/en-us/library/ms189574(v=sql.90).aspx

于 2013-01-08T06:03:07.650 に答える
0
--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
于 2016-02-04T06:32:53.133 に答える
0

長いテキストを処理するデータ型を使用することから始めてみてください。「文字」が頭に浮かびます。

于 2013-01-08T06:01:43.977 に答える