我为微软安装了 sqlcmd、bcp 和 odbc 17。
然后我使用 SQLCMD 连接到 Azure SQL - 它工作正常
然后我尝试使用 BCP 导入一些数据,但出现错误
我用:
bcp schema.table_name in "path to csv file" -S example.database.windows.net -U user_name -P "password" -d schema -c -t ','
SQLState = 28000, NativeError = 18456
Error = [unixODBC][Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user 'user_name'.
SQLState = 01S00, NativeError = 0
Warning = [unixODBC][Microsoft][ODBC Driver 17 for SQL Server]Invalid connection string attribute
我的密码包含 ] % ; ,这可能是个问题吗?
更新:
问题是当我使用 SQLCMD unixODBC 使用 {} 来转义密码并且它工作正常,但是当 BCP 使用 unixODBC 密码时没有转义。
指令命令
[ODBC][12517][1530961370.439037][SQLDriverConnectW.c][290]
Entry:
Connection = 0x1b56e20
Window Hdl = (nil)
Str In = [DRIVER={ODBC Driver 17 for SQL Server};SERVER={example.database.windows.net};UID={user_name};PWD={password};WSID={ADCSrv...][length = 145 (SQL_NTS)]
Str Out = (nil)
Str Out Max = 0
Str Out Ptr = (nil)
Completion = 0
UNICODE Using encoding ASCII 'ISO8859-1' and UNICODE 'UCS-2LE'
过境点
[ODBC][19984][1530962482.429621][SQLDriverConnect.c][726]
Entry:
Connection = 0xcb4ef0
Window Hdl = (nil)
Str In = [DRIVER={ODBC Driver 17 for SQL Server};server=example.database.windows.net;UID=user_name;PWD=password][length = 109 (SQL_NTS)]
Str Out = 0x7fff5397ce70
Str Out Max = 2048
Str Out Ptr = (nil)
Completion = 0
UNICODE Using encoding ASCII 'ISO8859-1' and UNICODE 'UCS-2LE'
如何解决?我考虑创建一个 DNS
对于 Azure SQL 数据库,在命令行中包含数据库名称:
编辑:
如果您的密码包含必须转义的字符(例如“;”但不是“%”),您需要将密码字符串括在大括号中: