Udostępnij przez


IBCPSession::BCPExec (OLE DB)

Dotyczy do:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSystem Platform Analitycznych (PDW)Baza danych SQL w Microsoft Fabric

pobierz sterownik OLE DB

Wykonuje operację kopiowania masowego.

Składnia

  
HRESULT BCPExec(   
      DBROWCOUNT *pRowsCopied);  

Uwagi

Metoda BCPExec kopiuje dane z pliku użytkownika do tabeli bazy danych lub odwrotnie, w zależności od wartości parametru eDirection używanego w metodzie IBCPSession::BCPInit .

Przed wywołaniem BCPExec wywołaj metodę BCPInit z prawidłową nazwą pliku użytkownika. Niezrobienie tego skutkuje błędem. Jedynym wyjątkiem jest sytuacja, gdy zapytanie ma być użyte do operacji masowego kopiowania. W takim przypadku określ NULL dla nazwy tabeli w metodzie BCPInit , a następnie określ zapytanie za pomocą opcji BCP_OPTION_HINTS.

Metoda BCPExec jest jedyną metodą kopiowania masowego, która prawdopodobnie pozostaje nieaktywna przez dłuższy czas. Jest to zatem jedyna metoda kopiowania masowego obsługująca tryb asynchroniczny. Aby użyć trybu asynchronicznego, ustaw specyficzną dla dostawcy właściwość sesji SSPROP_ASYNCH_BULKCOPY na VARIANT_TRUE przed wywołaniem metody BCPExec . Ta własność jest dostępna w zbiorze DBPROPSET_SQLSERVERSESSION właściwości. Aby sprawdzić ukończenie, wywołaj metodę BCPExec o tych samych parametrach. Jeśli kopia masowa nie została jeszcze ukończona, metoda BCPExec zwraca DB_S_ASYNCHRONOUS. W argumentze pRowsCopied zwraca także liczbę statusów liczby wierszy, które zostały wysłane lub odebrane od serwera. Wiersze wysyłane na serwer nie są zatwierdzane, dopóki partia nie zostanie zakończona.

Arguments

pRowsCocopyed[out]
Wskazówka do DWORD. Metoda BCPExec wypełnia DWORD liczbą wierszy pomyślnie skopiowanych. Jeśli argument pRowsCopied jest ustawiony na NULL, jest ignorowany przez metodę BCPExec .

Zwracanie wartości kodu

S_OK
Metoda się powiodła.

E_FAIL
Wystąpił błąd specyficzny dla dostawcy; aby uzyskać szczegółowe informacje, użyj interfejsu ISQLServerErrorInfo .

E_UNEXPECTED
Wywołanie metody było nieoczekiwane. Na przykład metoda BCPInit nie była wywoływana przed wywołaniem tej metody. Występuje także, gdy operacja została przerwana za pomocą opcji BCP_OPTION_ABORT, a metoda BCPExec została wywołana później.

E_OUTOFMEMORY
Błąd z powodu braku pamięci.

DB_S_ENDOFROWSET
Operacja masowego kopiowania zakończyła się, a cały transfer danych został zakończony.

DB_S_ASYNCHRONOUS
Obecna partia wierszy została skopiowana. Ponownie wywołaj metodę BCPExec , aby przenieść kolejną partię.

DB_S_ERRORSOCCURRED
Podczas operacji kopiowania masowego występowały błędy, a niektóre wiersze mogły nie zostać skopiowane. Liczba błędów jest nadal mniejsza niż maksymalna dozwolona liczba błędów.

Zobacz też

IBCPSession (OLE DB)
Wykonywanie operacji kopiowania masowego