IBCPSession::BCPControl (OLE DB)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

下載 OLE DB 驅動程式

設定大量複製作業的選項。

語法

  
HRESULT BCPControl(   
      int eOption,  
      void *iValue);  

備註

BCPControl 方法會設定各種大量複製作業的控制參數,包括取消大量複製之前允許出現的錯誤次數、要從資料檔案複製的第一個和最後一個資料列的數目,以及批次大小。

當從 SQL Server 大量複製資料時,這個方法也可用於指定要使用的 SELECT 陳述式。 您可以將 eOption 引數設定為 BCP_OPTION_HINTS 和 iValue 引數,以取得含有 SELECT 陳述式之寬字元字串的指標。

eOption 的可能值為:

選項 描述
BCP_OPTION_ABORT 停止已經進行的大量複製作業。 您可以用 BCP_OPTION_ABORT 的 eOption 引數來呼叫 BCPControl 方法,從另一個執行緒停止正在執行的大量複製作業。 iValue 引數會被忽略。
BCP_OPTION_BATCH 每一批次中的資料列數目。 預設值為 0,表示資料擷取時,會指出資料表中的所有資料列,或資料複製到 SQL Server 時,會指出使用者資料檔案中的所有資料列。 小於 1 的值會將 BCP_OPTION_BATCH 重設為預設值。
BCP_OPTION_DELAYREADFMT 這是布林值,如果設定為 true,就會導致 IBCPSession::BCPReadFmt 在執行時讀取。 如果為 false (預設值),IBCPSession::BCPReadFmt 將會立即讀取格式檔案。 如果 BCP_OPTION_DELAYREADFMT 為 true 而且您呼叫 IBCPSession::BCPColumns 或 IBCPSession::BCPColFmt,就會發生順序錯誤。

如果您在呼叫 IBCPSession::BCPControl(BCPDELAYREADFMT, (void *)TRUE) 和 IBCPSession::BCPWriteFmt 之後呼叫 IBCPSession::BCPControl(BCPDELAYREADFMT, (void *)FALSE)),也會發生順序錯誤。

如需詳細資訊,請參閱中繼資料探索
BCP_OPTION_FILECP iValue 引數包含資料檔案的程式碼頁面數目。 您可以指定程式碼頁面的數目,例如 1252 或 850,或以下任一個值:

BCP_FILECP_ACP:檔案中的資料是在用戶端的 Microsoft Windows® 程式碼頁面中。

BCP_FILECP_OEMCP:檔案中的資料是在用戶端的 OEM 程式碼頁面 (預設)。

BCP_FILECP_RAW:檔案中的資料是在 SQL Server 的字碼頁中。
BCP_OPTION_FILEFMT 資料檔案格式的版本號碼。 這可以是 80 (SQL Server 2000 (8.x))、90 (SQL Server 2005 (9.x))、100 (SQL Server 2008 (10.0.x) 或 SQL Server 2008 R2 (10.50.x)),或是 110 (SQL Server 2012 (11.x))。 預設值是 110。 這個值在使用舊版伺服器支援的格式匯出和匯入資料時非常實用。 例如,若要將從 SQL Server 2000 (8.x) 伺服器的文字資料行取得的資料,匯入至 SQL Server 2005 (9.x) 或更新版本伺服器的 varchar(max) 資料行中,則應該指定 80。 同樣地,當您從 varchar(max) 資料行匯出資料時,如果指定 80,則資料會以 SQL Server 2000 (8.x) 格式儲存,就像儲存文字資料行的格式一樣,並可匯入至 SQL Server 2000 (8.x) 伺服器的文字資料行中。
BCP_OPTION_FIRST 要複製的檔案或資料表的資料列。 預設值為 1,小於 1 的值會將這個選項重設為預設。
BCP_OPTION_FIRSTEX 如果是 BCP Out 作業,則指定將資料庫資料表第一個資料列複製到資料檔案中。

如果是 BCP In 作業,則指定將資料檔案的第一個資料列複製到資料庫資料表中。

iValue 參數必須是包含值的 64 位元組帶正負號整數之位址。 可傳遞至 BCPFIRSTEX 的最大值為 2^63-1。
BCP_OPTION_FMTXML 用於指定所產生的格式檔案應該是 XML 格式。 根據預設,這個選項是關閉的,而且格式檔案會儲存為文字檔。 XML 格式檔案提供更大的彈性,但是有一些條件約束。 例如,您無法同時指定欄位的前置詞和結束字元,即使在舊版格式檔案中是可以這麼做的。

注意:在 OLE DB 驅動程式 18.6.0 之前,只有當同時安裝 SQL Server 工具與 OLE DB Driver for SQL Server 時,才支援 XML 格式檔案。
BCP_OPTION_HINTS iValue 引數包含寬字元字串指標。 定址的字串會指定 SQL Server 大量複製處理提示或傳回結果集的 Transact-SQL 陳述式。 如果 Transact-SQL 陳述式指定為傳回一個以上的結果集,則第一個結果集之後的所有結果集都會被忽略。
BCP_OPTION_KEEPIDENTITY iValue 引數設定為 TRUE 時,這個選項會指定大量複製方法插入為 SQL Server 資料行提供的資料值 (這些值是由識別條件約束所定義)。 輸入檔案必須提供識別資料行的值。 如果沒有設定,就會為插入的資料列產生新的識別值。 檔案中屬於識別欄位的所有資料都會被忽略。
BCP_OPTION_KEEPNULLS 指定檔案中的空白資料值在 SQL Server 資料表中是否會轉換為 NULL 值。 當 iValue 引數設定為 TRUE 時,空白值在 SQL Server 資料表中會轉換為 NULL。 預設是將空白值轉換為 SQL Server 資料表中資料行的預設值 (如果有預設值的話)。
BCP_OPTION_LAST 要複製的最後一個資料列。 預設為複製所有資料列。 小於 1 的值會將這個選項重設為預設。
BCP_OPTION_LASTEX 如果是 BCP Out 作業,則指定將資料庫資料表最後一個資料列複製到資料檔案中。

如果是 BCP In 作業,則指定將資料檔案的最後一個資料列複製到資料庫資料表中。

iValue 參數必須是包含值的 64 位元組帶正負號整數之位址。 可傳遞至 BCPLASTEX 的最大值是 2^63-1。
BCP_OPTION_MAXERRS 在大量複製作業失敗之前,允許發生錯誤的數目。 預設值為 10。 小於 1 的值會將這個選項重設為預設。 大量複製會限制 65,535 個錯誤的上限。 如果嘗試將這個選項設為大於 65,535 的值,則該選項會設定為 65,535。
BCP_OPTION_ROWCOUNT 傳回受到目前 (或最近) BCP 作業影響的資料列數目。
BCP_OPTION_TEXTFILE 資料檔案不是二進位檔案,而是文字檔案 BCP 會藉由檢查資料檔案中前 2 個位元組中的 Unicode 位元組標記,偵測文字檔案是否為 Unicode 檔案格式。
BCP_OPTION_UNICODEFILE 當設定為 TRUE 時,這個選項會指定輸入檔案為 Unicode 檔案格式。

引數

eOption[in]
設定為上面<備註>一節所列的其中一個選項。

iValue[in]
這是所指定 eOption 的值。 iValue 引數是轉換為 Void 指標的整數值,以允許日後擴充為 64 位元值。

傳回碼值

S_OK
此方法已成功。

E_FAIL
發生提供者特有的錯誤,如需詳細資訊,請使用 ISQLServerErrorInfo 介面。

E_UNEXPECTED
此方法的呼叫是非預期的。 例如,在呼叫這個函數之前,不會呼叫 IBCPSession::BCPInit 方法。

E_OUTOFMEMORY
記憶體不足錯誤

另請參閱

IBCPSession (OLE DB)
執行大量複製作業