IBCPSession::BCPControl (OLE DB)

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

语法

  
HRESULT BCPControl(   
inteOption,  
void *iValue);  

注解

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

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

eOption 的可能值为:

选项 DESCRIPTION
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 *)FALSE))IBCPSession::BCPControl(BCPDELAYREADFMT, (void *)TRUE) IBCPSession::BCPWriteFmt,也会发生序列错误。

有关详细信息,请参阅 元数据发现
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 (SQL Server 2008 或 SQL Server 2008 R2)、110 (SQL Server 2012) 或 120 (SQL Server 2014)。 120 是默认值。 这对于以早期版本的服务器支持的格式导出和导入数据非常有用。 例如,要将从 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,指定要复制到数据库表中的数据文件的第一行。

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,指定要复制到数据库表中的数据文件的最后一行。

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)
执行大容量复制操作