Microsoft SQL BCP格式文件 - 版本?

时间:2017-03-28 03:49:48

标签: sql sql-server-2012 sql-server-2014 bcp sqlbulkcopy

我对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标志。然而,出口并不会对两端产生影响。

提前感谢您的专业建议。

1 个答案:

答案 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