排查 BCP 错误
本帮助文档全面概述了在 OpManager 中常见的 BCP 错误,并附带详细的故障排除方法来解决这些问题。
bcp.exe(Windows)/bcp(Linux) 或 bcp.rll 文件在 OpManager_Home/bin 文件夹中未找到
解决方案
适用于 Windows:
- 从安装 MSSQL 的位置中 binn/ 文件夹拷贝 bcp.exe 和 bcp.rll 文件,并粘贴到 OpManager_Home/bin/ 文件夹中。
- 如果存在多个 bcp.exe 文件,请保留与 MSSQL 版本匹配的那个,并删除旧版本。
(提示:在 OpManager_Home/bin/ 文件夹中打开命令提示符并执行 “bcp.exe -v” 命令,以获取 bcp.exe 的版本。)
适用于 Linux:
- 从 /opt/mssql-tools/ 目录的子文件夹中拷贝 “bcp” 和 “bcp.rll” 文件。
- 如果在 mssql-tools 文件夹中找不到这些文件,或该文件夹本身不存在,请参考此链接。
BCP 登录失败
解决方案
- 确保 MSSQL Server 的密码中不包含 “;” 等特殊字符。
- 在 OpManager_Home/bin/ 文件夹中执行 DBConfiguration.bat,在 OpManager 中更新正确的 MSSQL 用户名和密码。
DBConfiguration 步骤:
- 停止 OpManager 服务。
- 适用于 Windows: 打开命令提示符,在 OpManager_Home/bin/ 文件夹中执行 DBConfiguration.bat。
- 适用于 Linux: 以 root 用户登录终端,进入 <OpManager_Home>/bin 目录并执行 DBConfiguration.sh 文件。
- 输入正确的认证用户名和密码。

- 如果希望使用同一个数据库来存储数据,在 Database Name(数据库名称)字段中输入你要使用的同一个数据库名称并单击 OK。此时会弹出一个提示,询问是否要使用相同数据库,点击 OK。

(或)
如果希望为数据存储创建一个新数据库,则输入要创建的新数据库名称并点击 OK。 - DBConfiguration 完成后,启动 OpManager 服务。
BCP 与 MSSQL Server 版本不匹配
解决方案
- 从安装 MSSQL 的位置中 binn/ 文件夹拷贝与 MSSQL 版本相同的 bcp.exe 和 bcp.rll 文件,并粘贴到 OpManager_Home/bin/ 文件夹中。
(提示:在 OpManager_Home/bin/ 文件夹中打开命令提示符并执行 “bcp.exe -v” 命令,以获取 bcp.exe 的版本。你可以通过执行查询 “SELECT ServerPROPERTY('productversion') as 'Version'” 来检查 MSSQL 版本,或者在 SQL Server Management Studio 中右击实例名称并选择 Properties 查看。) - 如果安装了 Microsoft Native Client,请检查其版本是否与 MSSQL 版本匹配。
BCP 登录超时
解决方案
- 在对象资源管理器中,右击某个 Server 并选择 Properties。
- 点击 Connections 节点。
- 在 Remote Server connections 下的 Remote query timeout 框中,以秒为单位输入或选择 0 到 2,147,483,647 之间的值,以设置 SQL Server 在超时前等待的最长时间。
关于 bcp 的兼容性及其他常见故障排除选项:
解决方案
- 当 MSSQL Server 部署在本地系统时,将 MSSQL Server 名称更改为系统名。
- 当用户(Windows/MSSQL)没有执行 bcp 文件的权限时,请确保 ODBC 连接使用 SQL Server 身份验证。如果只使用 Windows 身份验证而未同时使用 SQL Server 身份验证,BCP 将无法启动[1]。
- 检查 ODBCBCP.dll 和 SQLSRV32.dll 文件。这两个文件必须是相同版本。如果版本不同,请重命名 SQLSRV32.dll 文件,然后重新安装 MDAC(ODBC)。ODBCBCP.dll 和 SQLSRV32.dll 文件位于 WINNT\System32 文件夹中,这两个文件的版本号必须相同[1]。
- 如果 MSSQL Server 安装在远程 Server 上且本地系统未安装 Native Client,请在本地系统上安装与 MSSQL Server 版本相匹配的 Native Client。
安装 Native Client:
请从以下链接下载 SQL Native Client。你需要向下滚动页面找到 Native Client 的下载项:
https://www.microsoft.com/en-us/download/details.aspx?id=50402
Microsoft SQL Server 2008 R2 Native Client(SQL Server Native Client)是一个包含 SQL OLE DB 提供程序和 SQL ODBC 驱动程序的单一动态链接库(DLL)。它为使用本机代码 API(ODBC、OLE DB 和 ADO)来连接 Microsoft SQL Server 2000、2005 或 2008 的application提供运行时支持。SQL Server Native Client 应用于创建新的application或增强现有application,以便利用 SQL Server 2008 R2 的新特性。此 SQL Server Native Client 可再发行安装程序将安装在运行时利用 SQL Server 2008 R2 新特性所需的客户端组件,并可选地安装用于开发使用 SQL Server Native Client API 的application所需的头文件。
有关安装 Native Client 的更多详细信息,请参考此站点。
- 如果在 OpManager_Home/bin/ 文件夹中执行 bcp.exe 时出现 “msvcr120.dll、msodbcsql13.dll 文件缺失” 的错误提示,可能有两种原因:
- 缺少适用于 Visual Studio 的 Visual C++ 可再发行组件包: 在这种情况下,请从此处安装适用于 Visual Studio 的 Visual C++ 可再发行组件包。
- 缺少 Microsoft® ODBC Driver for SQL Server®: 在这种情况下,请从这里安装 Microsoft® ODBC Driver for SQL Server®。
注意:要检查 ODBC 与 SQL Server 的兼容性,请参考此 Microsoft 文档。
- 如果 BCP 问题仍然存在:
- 打开命令提示符,在 OpManager_Home/bin/ 文件夹中执行 bcp.exe,并截取输出的屏幕截图。
- 将截图发送至 opmanager-support@mangeengine.com 以协助解决问题。
MSSQL Server 事务日志已满
解决方案
- 连接到 MSSQL 数据库并右击数据库名称。
- 点击 Properties,在 Options 下将 Recovery Mode(恢复模式)设置为 Simple。
- 右击数据库名称,选择 Tasks > Shrink > Files,然后点击 OK 进行压缩。
参考:
[1]https://support.microsoft.com/en-in/help/869315/error-message-when-you-perform-a-bulk-copy-process-bcp-in-microsoft-dy