2017-09-13 11 views
0

私はSPのタイムアウトを処理しているbulkInsertのストアドプロシージャを記述しました。依然として、SPを実行しているときに「要求サイズが大きすぎます」という例外が発生しています。 SPの下に与える。私が間違っているところで私を助けてください。私は複数のコードからすべてのコードを取りました。彼らが持っているのと同じように扱います。 SP上で扱うためのリクエストサイズが大きすぎます

function spBulkInsert(docs){ 
    if (!docs) { 
     throw new Error('Documents array is null or not defined!'); 
    } 
    var context = getContext(); 
    var collection = context.getCollection(); 
    var response = context.getResponse(); 

    var docCount = docs.length; 

    if (docCount == 0) { 
     response.setBody(0); 
     return; 
    } 
    var count = 0; 
    createDoc(docs[0]); 

    function createDoc(doc) { 
     var isAccepted = collection.createDoucument(collection.getSelfLink(), doc, docCreated); 
     if (!isAccepted) { 
      response.setBody(count); 
     } 
    } 
    function docCreated(err, doc) { 
     if (err) throw err; 
     count++; 
     if (count == docCount) response.setBody(count); 
     else createDoc(docs[count]); 
    } 
}; 

コード:

かかわらず、書き込みが発生(SPまたはAPIまたはポータル内)コスモスDB内の文書サイズの2メガバイトの制限が常にありますどこの
var totalInsertedCount=0; 
       while (totalInsertedCount < data.Count) 
       { 
        var insertedCount = await client.ExecuteStoredProcedureAsync<int>(
              UriFactory.CreateStoredProcedureUri("TestDoc", "coll", "spBulkInsert"), 
              new RequestOptions { PartitionKey = new PartitionKey("partitionKey") }, data); 
        totalInsertedCount += insertedCount; 
        Console.WriteLine("Inserted {0} documents ({1} total, {2} remaining)", insertedCount, totalInsertedCount, data.Count - totalInsertedCount); 
        data= data.GetRange(insertedCount, data.Count - insertedCount); 
       } 
+0

不要な削除など、あなたの文書データを、「簡素化しよう」と「\ n」はなどができますか?詳細がなければ、エラーの原因を知ることは困難です。それに応じて質問を編集してください。 –

+0

はい!私は2MB以上のデータを渡しています。しかし、私はisAccepted変数でそれを処理しています。また、SP処理コードも共有できます。 – Shraddha

+0

@Shraddhaこんにちは、Shraddha.Pleaseすべてのドキュメントのサイズが2MBのfirst.According私の経験を超えていないことを確認してください、あなたのエラーは一度に一括インポートで実行された過剰なデータが原因です。要求はタイムアウトし、SDKは自動的にロールバックして再試行します。 Howerverさん、あなたのコードでは、インポートするデータをカットし、スループットを変更せずに例外に対して手動で再試行することをお勧めします。 –

答えて

0

The document size in the request exceeded the allowable document size for a request. The max allowable document size is 2MB.hereのように要約します。

Stored Procedure Bulk importing dataは、ストアドプロシージャを実行するプロセスで、1つのHTTPリクエストのみであり、HTTPリクエストあたりの要求ドキュメントのサイズは、2MB以下のCosmos DBによって制限されます。

提案

1.Youはあなたの文書データを分割し、バッチでそれらをインポートすることができます。

2.Youはあなたのストアドプロシージャにどのくらいのデータを渡している

0

。文書は、Cosmos DBに提出する前に、クライアント側で分割/分離/連鎖/リンクされていなければなりません。

関連する問題