私は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);
}
不要な削除など、あなたの文書データを、「簡素化しよう」と「\ n」はなどができますか?詳細がなければ、エラーの原因を知ることは困難です。それに応じて質問を編集してください。 –
はい!私は2MB以上のデータを渡しています。しかし、私はisAccepted変数でそれを処理しています。また、SP処理コードも共有できます。 – Shraddha
@Shraddhaこんにちは、Shraddha.Pleaseすべてのドキュメントのサイズが2MBのfirst.According私の経験を超えていないことを確認してください、あなたのエラーは一度に一括インポートで実行された過剰なデータが原因です。要求はタイムアウトし、SDKは自動的にロールバックして再試行します。 Howerverさん、あなたのコードでは、インポートするデータをカットし、スループットを変更せずに例外に対して手動で再試行することをお勧めします。 –