Birden çok sonuç kümesi işlemek için IMultipleResults kullanma
Tüketiciler kullanmak IMultipleResults tarafından döndürülen sonuçlar işlemek için arabirim SQL Server yerel istemci ole db sağlayıcı komut yürütme.Zaman SQL Server yerel istemci ole db sağlayıcı, yürütme için bir komut gönderir SQL Server deyimleri yürütür ve döndürür herhangi sonuçlar.
Bir istemci tüm işlemeniz gerekiyor sonuçlar komut yürütülmesini.Çünkü SQL Server yerel istemci ole db sağlayıcı komut yürütme sonuçlar olarak birden çok satır kümesi nesneleri oluşturmak, kullanmak IMultipleResults arabirim uygulama veri alma istemci tarafından başlatılan gidiş dönüş tamamlanmasını sağlamak için.
Aşağıdaki Transact-SQL deyim oluşturur birden çok satır kümeleri, bazı içeren satır verileri OrderDetails tablo ve compute by yan tümce tümce tümce içeren bazı sonuçlar:
SELECT OrderID, FullPrice = (UnitPrice * Quantity), Discount,
Discounted = UnitPrice * (1 - Discount) * Quantity
FROM OrderDetails
ORDER BY OrderID
COMPUTE
SUM(UnitPrice * Quantity), SUM(UnitPrice * (1 - Discount) * Quantity)
BY OrderID
Tüketici bu metni içeren bir komut yürütür ve alınan sonuçlar arabirim olarak bir satır küme istekleri, yalnızca ilk satır küme döndürülür.Tüketici, tüm satırlar döndürülen satır kümesi içinde işleyebilir.Ancak, DBPROP_MULTIPLECONNECTIONS veri kaynak özellik ise küme için VARIANT_FALSE ve mars bağlantısı üzerinde etkin değil, diğer komutları oturum nesnesi üzerinde yürütülebilecek ( SQL Server yerel istemci ole db sağlayıcı değil başka bir bağlantı oluştur) komutu iptal edilinceye kadar.mars, bir bağlantı etkin olduğunda SQL Server , DBPROP_MULTIPLECONNECTIONS VARIANT_FALSE ise ve hatalı döndürürse E_FAIL var. bir etkin işlem yerel istemci ole db sağlayıcı db_e_objectopen hata verir
The SQL Server Native Client OLE DB provider will also return DB_E_OBJECTOPEN when using streamed output parameters and the application has not consumed all the returned output parameter values before calling IMultipleResults::GetResults to get the next result set. If MARS is not enabled and the connection is busy running a command that does not produce a rowset or that produces a rowset that is not a server cursor, and if the DBPROP_MULTIPLECONNECTIONS data source property is set to VARIANT_TRUE, the SQL Server Native Client OLE DB provider creates additional connections to support concurrent command objects, unless a transaction is active, in which case it returns an error.Hareketleri ve kilitleme tarafından yönetilen SQL Server üzerinde bir her bağlantı için ayrı ayrı.İkinci bir bağlantısı oluşturursa, farklı bağlantılar üzerinde komut kilitleri paylaşmaz.Dikkat çekildiği, bir komutu mu değil emin olmak için blok başka bir komut tarafından istenen satır üzerinde kilitler basılı tutarak.mars etkin olduğunda birden çok komut bağlantılarında etkinleştirilebilir ve açık hareketleri kullanılırsa, tüm komutları ortak hareket paylaşabilirsiniz.
Tüketici komutu kullanarak iptal edebilirsiniz ISSAbort::Abort veya command nesnesi ve türetilen satır kümesi üzerinde tutulan tüm Referansları başlatıyor.
Kullanarak IMultipleResults tüm durumlarda komut yürütme tarafından üretilen tüm satır kümeleri almak tüketici ve tüketiciler komut yürütme iptal etmek ve bir oturum nesnesini kullanmak için diğer komutları tarafından serbest ne zaman uygun şekilde belirlemek olanak sağlar.
Not
When you use SQL Server cursors, command execution creates the cursor.SQL Server returns success or failure on the cursor creation; therefore, the round trip to the instance of SQL Server is complete upon the return from command execution.Her GetNextRows çağrı sonra gidiş dönüş olur.Bu şekilde, birden çok active komut nesneleri vardır, her bir sunucu imleci getirme sonucu olan bir satır kümesi işleme.Daha fazla bilgi için bkz: Satır kümeleri ve sql Server imleçler.