我有一个需要使用的多数据库设置,并且两者都有自己的 bcp 版本,但其行为方式不同。另外,两者都在我的 %PATH% 中,并且 Sybase 列在 MS SQL exe 之前,因此从命令行调用“bcp”总是会命中 Sybase exe。
首先,版本“不同”:
Sybase BCP:Sybase CTBCP 实用程序/15.0/P-EBF17890 ESD #24/PC Intel/BUILD1500-123/OPT/2010 年 5 月 13 日星期四 02:45:43
(适用于 Adaptive Server Enterprise/15.7/EBF 23008 SMP SP130 /P/RS6000/AIX 6.1/ase157sp13x/3819/64-bit/FBO/2014 年 8 月 23 日星期六 02:49:06)
MS SQL BCP:版本:11.0.2100.60
(查询命中 SQL 2008 R2 和 2012 SP3 数据库)
他们绝对不会以相同的方式处理文件的输出,每个文档都表明了这一点。我在 bcp 上读到的所有内容都表明,bcp 在 Sybase 和 MS SQL 之间的工作方式应该相同,但我必须调用完整的 MS SQL bcp.exe 路径来对 MS SQL 进行查询输出调用,因为 Sybase bcp 不支持以相同方式进行查询。
我的流程使用批处理脚本调用多个查询,这些查询命中 Sybase DBS,然后调用 MS SQL 数据库将数据输出到临时数据库,我是否始终必须区分 Sybase 和 MS SQL bcp,还是可以只使用一个而不会出现问题?如果是这样,哪一个是“正确的”使用(不是试图在这里引发关于哪一个更好的争论)。另外,我没有看到任何迹象表明版本号有任何关系,所以知道哪个是“最新的”并且使用它被证明是困难的。
请记住,MS SQL Server 与 1994 年的 Sybase ASE(称为 Sybase SQL Server)相同,但此后,它们慢慢开始分开。所以BCP的概念还是有的,而且是类似的,只是细节不同了。
一方面,不要指望能够互换这些数据库的客户端工具:Microsoft 已对 TDS 协议进行了更改,使得客户端无法连接到其他供应商的数据库。
如果两个同名的可执行文件之间存在冲突,常见的解决方案包括 (i) 显式指定可执行文件的路径名 (ii) 在调用一个或另一个可执行文件之前设置正确的环境变量 (iii) 重命名其中一个可执行文件。 YMMV。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)