在安装了 SQL Server 的机器上使用 bcp 批处理导出数据为 txt 文件,之前执行的时候都能导出成功,但最近出现一个错误,不能导出了。
出现如下错误:
Copy direction must be either 'in' or 'out'. Syntax Error in 'queryout'. usage: bcp [[db_name.]owner.]table_name[:slice_num] [partition pname] {in | out} [filename] [-m maxerrors] [-f formatfile] [-e errfile] [-F firstrow] [-L lastrow] [-b batchsize] [-n] [-c] [-t field_terminator] [-r row_terminator] [-U username] [-P password] [-I interfaces_file] [-S server] [-a display_charset] [-z language] [-v] [-A packet size] [-J client character set] [-T text or image size] [-E] [-g id_start_value] [-N] [-X] [-M LabelName LabelValue] [-labeled] [-K keytab_file] [-R remote_server_principal] [-C] [-V [security_options]] [-Z security_mechanism] [-Q] [-Y] [-x trusted.txt_file] [--maxconn maximum_connections] [--show-fi] [--hide-vcc] NULL
在网上搜索发现,是因为:后来在这个机器上安装了 Sybase 数据库。安装 Sybase 后,导致环境变量发生了改变导致 bcp 命令出错。
如何恢复 SQL Server 的 bcp 命令的正常使用?
我发现,安装了 Sybase 后,Path 的变量值为:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;c:\sybase\dll;c:\sybase\bin;C:\Program Files\Microsoft SQL Server\80\Tools\BINN;C:\Program Files\Sybase\Adaptive Server Anywhere 6.0\win32;c:\sybtools\WIN32;c:\sybtools\ASEP
而安装 SQL 未安装 Sybase 的 Path 变量值为:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Microsoft SQL Server\80\Tools\BINN
可以发现影响 bcp 的就是 「C:\Program Files\Microsoft SQL Server\80\Tools\BINN」 这一行。所以将 Path 的变量值根据实际情况修改回来就可以正常使用 SQL 的 bcp 命令了。测试通过。