Udostępnij przez


Aby przetworzyć wiele zestawów wyników przy użyciu IMultipleResults

Użyj konsumentów IMultipleResults interfejs do przetworzenia wyniki zwróconych przez SQL Server macierzystego klienta OLE DB dostawca polecenia wykonanie.Gdy SQL Server macierzystego klienta dostawca OLE DB przesyła polecenie do wykonania, SQL Server wykona instrukcje i zwraca żadnych wyniki.

Klient musi przetworzyć wszystkie wyniki wykonania polecenia.Ponieważ SQL Server wykonanie polecenia dostawca macierzystym klient OLE DB można wygenerować zestawu zestaw wierszy wielu obiektów jako wyniki, użyj IMultipleResults interfejs w celu zapewnienia, że pobieranie danych aplikacji kończy błądzenia zainicjowane przez klient.

Następujące Transact-SQL instrukcja generuje wiele zestawów wierszy, wiersza zawierającego dane z SzczegółyZamówienia tabela i niektóre wyniki zawierające klauzula COMPUTE BY:

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

Jeśli konsument wykonuje polecenie zawierające ten tekst i żąda zestawu zestaw wierszy jako interfejs zwróconych wyniki, zwracana jest wartość pierwszego zestawu zestaw wierszy.Konsument może przetworzyć wszystkie wiersze w zestawie zestaw wierszy zwracanych.Jednak, jeśli właściwość Źródło danych DBPROP_MULTIPLECONNECTIONS jest zestaw do VARIANT_FALSE i MARS nie jest włączona dla połączenia, można wykonać żadnych innych poleceń na obiekt sesja ( SQL Server macierzystego klienta dostawca OLE DB nie utworzy innego połączenia) aż Anulowano polecenie.Jeśli MARS nie jest włączona dla połączenia, SQL Server macierzystego klienta dostawca OLE DB zwraca błąd DB_E_OBJECTOPEN, jeśli DBPROP_MULTIPLECONNECTIONS jest VARIANT_FALSE i zwraca E_FAIL, jeśli nie ma aktywnych transakcji.

SQL Server Macierzystego klienta dostawca OLE DB zwrócone zostaną również DB_E_OBJECTOPEN podczas używania strumieniowo parametrów wyjściowych i aplikacji nie ma spożywane wszystkich wartości parametru wyjściowe przed wywoływaniem IMultipleResults::GetResults uzyskać następnego zestaw wyników. Jeśli MARS nie jest włączona, połączenie jest zajęte uruchomiono polecenie, które nie produkują zestawu zestaw wierszy lub daje zestawu zestaw wierszy, które nie kursor serwera, a jeśli źródło danych DBPROP_MULTIPLECONNECTIONS właściwość jest ustawiona wartość inna niż VARIANT_TRUE, SQL Server macierzystego klienta dostawca OLE DB tworzy dodatkowe połączenia do obsługi obiektów polecenia współbieżne, chyba że transakcja jest aktywny, w którym to przypadek zwraca błąd.Transakcje i blokowanie są zarządzane przez SQL Server na na podstawie połączenia.Drugie połączenie jest generowany, polecenie na osobne połączenia nie współużytkuje blokad.Musi być zadbać nie obsługuje polecenia blok innego przez blokują wierszy wymagane przez inne polecenie.Jeśli MARS jest włączona, wiele poleceń może być aktywny dla połączeń i jeśli transakcje są używane, wszystkie polecenia Udostępnianie wspólnych transakcji.

Konsument może anulować polecenie przy użyciu ISSAbort::Abort lub zwalniając wszystkie odwołania w dniach obiektu command i pochodnych zestawu zestaw wierszy.

Za pomocą IMultipleResults we wszystkich wystąpieniach umożliwia konsumentom uzyskanie wszystkich zestawów wierszy wygenerowanych przez wykonanie polecenia i pozwala klientom odpowiednio ustalić, kiedy wykonywanie polecenia Anuluj i zwolnić obiektu sesja do użytku przez inne polecenia.

Ostrzeżenie

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.Każdy GetNextRows wywołanie staje się podróż.W ten sposób może istnieć wiele obiektów active polecenia, przetwarzania każdego zestawu zestaw wierszy, która jest wynikiem pobranie z kursor serwera.Aby uzyskać więcej informacji, zobacz zestawów wierszy i liczby kursorów SQL Server.

Zobacz także

Koncepcje