"metadata could not be determined" 从命令行使用 bcp 导入时

"metadata could not be determined" when importing with bcp from command line

我通常使用 SQL Database Migration Wizard (SQLAzureMW) 来编写 tables 的脚本,然后将它们导入到一个新的数据库中,因为由于安全规则,我通常不会在源代码之间建立连接和目标数据库。但是,这次我没有使用 bcp 导入一些 tables.

我进一步研究并在托管源数据库的同一台机器上创建了一个临时测试数据库。我尝试编写一个 table 脚本并导入它,全部使用 SQLAzureMW。它工作得很好,它还向我显示了用于导入 .dat 脚本文件的命令:

bcp.exe "dbName.dbo.tableName" in "c:\pathTo\dbo.tableName.dat" -E -n -C RAW -b 1000 -a 4096 -q -S targetServerAddress -U "dbUser" -P "dbPassword"

(我手动更改了上面的一些变量以使其保持通用)

但是,如果我尝试从命令行执行相同的命令,它会失败并显示以下错误输出:

SQLState = S0002, NativeError = 208
Error = [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Invalid object name 'dbName.dbo.tableName'.
SQLState = 37000, NativeError = 11529
Error = [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]The metadata could not be determined because every code path results in an error; see previous errors for some of these.

我确定连接或 table 名称参数没有错误,因为在这种情况下它会输出 "login failed"(错误的服务器、用户、密码或数据库名称)。

在 运行 bcp 命令之前,SQLAzureMW 是否有任何程序 运行 我也应该执行?如果我可以将该应用程序仅用于导入,那就太好了,因为我已经有了 .dat 文件...

找到解决方案。为选定的数据库表完成脚本生成后,SQLAzureMW 有一个 "SQL Script" 选项卡。我复制了整个脚本并在我想导入 .dat 脚本表的空数据库中执行。该脚本包含创建表的说明 - 显然,.dat 文件没有出于未知原因这样做,因为我已经多次重复备份过程检查选项 "Schema table with data".

重要的是要注意,我以前在旧版本的应用程序中不需要它。不过我无法重新测试,因为我已经在每台机器上更新了它,而且我无法再下载旧版本。