Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

थ्रेडिंग और SqlFileStream. प्रक्रिया निर्दिष्ट फ़ाइल तक नहीं पहुंच सकती क्योंकि इसे किसी अन्य लेनदेन में खोला गया है

लेन-देन Parallel.ForEach . में प्रवाहित नहीं होता है , आपको लेन-देन को मैन्युअल रूप से लाना होगा।

//Switched to a thread safe collection.
var documents = new ConcurrentQueue<ExtractedContent>();
using (var ts = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
{
    var attachments = await dao.GetAttachmentsAsync();
    //Grab a reference to the current transaction.
    var transaction = Transaction.Current;
    Parallel.ForEach(attachments, a =>
    {
        //Spawn a dependant clone of the transaction
        using (var depTs = transaction.DependentClone(DependentCloneOption.RollbackIfNotComplete))
        {
            documents.Enqueue(a.ToDbDocument());
            depTs.Complete();
        }
    });

    ts.Complete();
}

मैंने List<ExtractedContent> . से भी स्विच किया है करने के लिए ConcurrentQueue<ExtractedContent> क्योंकि आपको .Add( एक ही समय में कई थ्रेड्स की सूची में।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. वर्चर और nvarchar SQL सर्वर डेटा प्रकारों के बीच मुख्य प्रदर्शन अंतर क्या हैं?

  2. डेटाबेस तालिका से वर्ग उत्पन्न करें

  3. टीएसक्यूएल ईमेल सत्यापन (रेगेक्स के बिना)

  4. लॉग इन करते हुए भी SQL लॉगिन ड्रॉप करें

  5. SAP IQ को SQL सर्वर से कनेक्ट करें