【发布时间】:2017-08-20 23:35:47
【问题描述】:
我有一个关于 Microsoft SQL 的批量复制程序 (BCP.exe) 的问题。我对使用该程序比较陌生,所以希望这对某些人来说是一个简单的问题,但是我被卡住了!
在服务器 #1 上,我们运行 Microsoft SQL 2014,它运行 BCP 以导出多个表。它为我提供了每个表的 *.DAT 和 *.FMT 文件。
当我将此数据导入运行 Microsoft SQL 2012 的服务器 #2 时,我收到一个错误:
SQLState = HY000, NativeError = 0Error = [Microsoft][SQL Server Native Client 11.0][SQL Server]Syntax error at line 2 column 0 in xml format file. | Exit Code: 1
我了解到使用 BCP 从较新版本的 SQL 转换到较旧版本的 SQL 时存在版本控制问题,并很快找到了手动解决此问题的方法。
您可能知道,在 FMT 文件中,第一行包含导出数据的 SQL 版本号 - 在本例中为 12.0。如果我将其更改为 11.0(或 10.0),然后重新运行导入一切正常且花花公子!
这是我编辑第一行之前的 FMT 文件示例:
12.0
6
1 SQLNCHAR 2 72 "" 1 ListID SQL_Latin1_General_CP1_CI_AS
2 SQLNCHAR 2 32 "" 2 EditSequence SQL_Latin1_General_CP1_CI_AS
3 SQLNCHAR 2 62 "" 3 Name SQL_Latin1_General_CP1_CI_AS
4 SQLBIT 1 1 "" 4 IsActive ""
5 SQLNCHAR 2 30 "" 5 PriceLevelType SQL_Latin1_General_CP1_CI_AS
6 SQLDECIMAL 1 19 "" 6 PriceLevelFixedPercentage
虽然我可以手动修复此问题,但我需要自动化此系统以非常定期地运行,因此这不是一个长期解决方案。请帮助!有什么我可以做的吗?
我需要修复导出以使其使用 v11.0 或更早版本,或者修复导入以使其识别 v12.0。我尝试在导入和导出上都使用 -V 标志,但这对任何一端都没有影响。
提前感谢您的专家建议。
【问题讨论】:
-
我的问题和这个一样。你想通了吗? stackoverflow.com/questions/50640505/…
标签: sql sql-server-2012 sql-server-2014 bcp sqlbulkcopy