我对Microsoft SQL的批量复制程序(BCP.exe)有疑问。我对使用该程序相对较新,所以我希望对某些人来说这是一个简单的问题,但是我被卡住了!
在服务器#1上,我们正在运行Microsoft SQL 2014,它运行BCP以导出许多表。它为我提供了每个表的* .DAT和* .FMT文件。
当我将此数据导入运行Microsoft SQL 2012的Server#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,并且很快就找到了一种手动修复它的方法。
在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标志。然而,出口并不会对两端产生影响。
提前感谢您的专业建议。
答案 0 :(得分:0)
我设法通过为SQLServer®安装Microsoft®CommandLine Utilities 11并将bcp.exe位置添加到路径变量来解决此问题。现在我可以使用bcp 11导出版本11,从而使导出的格式文件与SQL 2012兼容。您可以从这里下载https://www.microsoft.com/en-us/download/details.aspx?id=36433