IBCPSession::BCPControl (OLE DB)

设置大容量复制操作的选项。

语法

        HRESULT BCPControl( 
      inteOption,
      void *iValue);

注释

BCPControl 方法设置用于大容量复制操作的各种控制参数,其中包括取消大容量复制之前允许的错误数、要从数据文件中复制的第一行和最后一行的行数和批大小。

从 SQL Server 大容量复制数据时,此方法还可用于指定要使用的 SELECT 语句。可以将 eOption 参数设置为 BCP_OPTION_HINTS,并将 iValue 参数设置为具有一个指针,该指针指向包含该 SELECT 语句的宽字符串。

BCPControl 方法将 BCP 结构的成员变量设置为启用用户设置的选项。有效选项如下:

选项

说明

BCP_OPTION_ABORT

停止正在进行的大容量复制操作。可以从其他线程调用 eOption 参数为 BCP_OPTION_ABORT 的 BCPControl 方法,以停止正在运行的大容量复制操作。忽略 iValue 参数。

BCP_OPTION_BATCH

每批的行数。默认值为 0,当提取数据时,该默认值表示表中的所有行;将数据复制到 SQL Server 时,则表示用户数据文件中的所有行。值小于 1 则将 BCP_OPTION_BATCH 重置为默认值。

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)、90 (SQL Server 2005) 或 100。默认值是 100,指示文件采用 SQL Server 2008(或 SQL Server 2008 R2)格式。对于采用服务器早期版本所支持的格式的数据,该选项对导出和导入这样的数据非常有用。例如,若要将从 SQL Server 2000 服务器中的文本列获取的数据导入到 SQL Server 2005 或更高版本服务器中的 varchar(max) 列,则应该指定 80。类似地,如果从 varchar(max) 列导出数据时指定 80,数据的保存方式就与按照 SQL Server 2000 格式保存的文本列类似,并且可以将这些数据导入到 SQL Server 2000 服务器的文本列中。

BCP_OPTION_FIRST

要复制的文件或表的第一行数据。默认值为 1;值小于 1 则将此选项重置为其默认值。

BCP_OPTION_FIRSTEX

对于 BCP out 操作,指定要复制到数据文件的数据库表的第一行。

对于 BCP in 操作,指定要复制到数据库表的数据文件的第一行。

iValue 参数应为包含值的 64 位带符号整数的地址。可以传递到 BCPFIRSTEX 的最大值为 2^63-1。

BCP_OPTION_FMTXML

用于指定生成的格式化文件应采用 XML 格式。默认情况下关闭此选项,此时将格式化文件作为文本文件保存。XML 格式化文件提供更大的灵活性,但具有某些额外约束。例如,不能同时为字段指定前缀和终止符,而在较早的格式化文件中则可以执行此操作。

注意注意
只有当 SQL Server 工具和 SQL Server Native Client 一起安装后,才支持 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 将通过检查数据文件的前两个字节中的 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
    内存不足错误。

请参阅

概念

其他资源