bcp 实用程序抱怨 "Neither DSN nor SERVER keyword supplied"

bcp utility complains about "Neither DSN nor SERVER keyword supplied"

我正在尝试将 bcp.exe 的文件导入 Azure SQL。我使用 -S 参数提供服务器名称,并且它的格式设置为我认为正确的格式。然而它抱怨没有 SERVER 关键字。 Bcp 没有 SERVER 关键字,而是使用 -S 参数。错误消息来自 bcp 使用的 ODBC 驱动程序。我 90% 确定这在过去有效。

我已经从 PowerShell 和 cmd.exe 中尝试了 运行:

bcp myschema.tb_mytable in "C:\Users\myname\AppData\Local\Temp\bcp_tmp_file_e1de3d69-b637-4b0e-aa67-e26a44394b4f" -c -r "\r\n" -S "tcp:thesqlserver.database.windows.net,1433" -d THEDATABASENAME -b 50000 -U THE-USER-NAME -P "the@-?^&secret{password;^&]"

错误信息:

SQLState = 08001, NativeError = 0
Error = [Microsoft][ODBC Driver 17 for SQL Server]Neither DSN nor SERVER keyword supplied
SQLState = 01S00, NativeError = 0
Warning = [Microsoft][ODBC Driver 17 for SQL Server]Invalid connection string attribute
(base) PS C:\Users\myname>

Bcp 版本是最新的:

C:\Users\myname>bcp /v
BCP - Bulk Copy Program for Microsoft SQL Server.
Copyright (C) Microsoft Corporation. All Rights Reserved.
Version: 15.0.2000.5

可能不相关,但根据 bcp 文档,我已经使用 ^ 字符对密码中的字符进行了转义。

似乎是“{”和“;”的组合导致 BCP 或 ODBC 驱动程序出错(不确定是哪一个)......我也可以用这个字符串复制问题:{abc;.

您可以尝试更改密码吗?看起来 DOS 提示符或 Powershell、BCP 和 ODBC 的不同转义规则在这里有些冲突。