使用SSMS导入导出向导导出数据到Azure Synapse的游标支持报错问题
SSMS导入导出向导向并行数据仓库导出数据报错解决方案
报错原因
该错误是因为SQL Server并行数据仓库(PDW/APS)及同类产品的TDS端点未实现服务器端游标支持,而SSMS导入导出向导默认使用的SQL Server Native Client 11.0驱动会默认调用游标特性,触发不兼容报错。
可行解决方案
按生效优先级排序如下:
调整连接属性禁用服务器端游标
打开导入导出向导,在「选择数据源/目标」步骤选中SQL Server Native Client 11.0驱动,点击「高级」按钮,在属性列表中找到Use Server Side Forward Only Cursors选项,将值修改为False后保存,继续后续导出流程即可。更换驱动避免游标逻辑
不要使用默认的SQL Server Native Client驱动,改为选择.Net Framework Data Provider for ODBC作为数据源/目标驱动,提前配置好指向目标并行数据仓库的ODBC DSN,使用专用的PDW ODBC驱动完成传输。修改数据传输模式
在「指定表复制或查询」步骤优先选择「复制一个或多个表或视图的数据」,避免自定义查询触发游标调用。如果必须使用自定义查询,可先将查询结果导出到普通SQL Server实例的中间表,再从中间表批量同步到目标数据仓库。使用bcp命令行工具完成批量传输
完全避开SSMS向导的游标逻辑,直接用bcp工具完成导出导入:- 从源实例导出数据到本地CSV:
bcp [源库名].[架构名].[表名] out C:\export\table.csv -S 源实例地址 -U 账号 -P 密码 -c -t, - 导入CSV到目标并行数据仓库:
bcp [目标库名].[架构名].[表名] in C:\export\table.csv -S 目标PDW实例地址 -U 账号 -P 密码 -c -t, -b 10000
- 从源实例导出数据到本地CSV:
注:SSMS 18.9.2版本本身兼容并行数据仓库导出操作,无需升级SSMS版本即可通过上述方案解决问题
内容的提问来源于stack exchange,提问作者Christopher Procknow
相关产品推荐
相关产品推荐

