【问题标题】:BCP error "Unable to open BCP host data-file"BCP 错误“无法打开 BCP 主机数据文件”
【发布时间】:2017-01-20 18:41:53
【问题描述】:

我刚刚在我的 sqlserver 名称 exporttable 中创建了一个新表 现在我正在尝试使用 cmd bcp 推出,但出现以下错误:

SQLState = S1000,NativeError = 0 错误 = [Microsoft][ODBC 驱动程序 13 对于 SQL Server]无法打开 BCP 主机数据文件

这是我的路径:

C:\Users\Serge>BCP Testing.bdo.Exporttable out "C:\Users\Serge\Desktop" -C -T

有人可以帮忙吗?

在尝试了 Shnugos 建议添加文件名后,我收到了这个错误:

SQLState = S0002,NativeError = 208 错误 = [Microsoft][ODBC 驱动程序 13 对于 SQL Server][SQL Server]无效的对象名称 'Testing.bdo.ExportTable'。 SQLState = 37000,NativeError = 11529 错误 = [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]无法确定元数据,因为每个代码路径都会导致错误; 请参阅之前的一些错误。 ——

【问题讨论】:

标签: sql-server cmd bcp


【解决方案1】:

根据我的错误,无法打开数据文件:

C:\Users\Serge>BCP Testing.bdo.Exporttable out "C:\Users\Serge\Desktop\MyFile.txt" -C -T

我认为,您必须在\Desktop 后面添加一个文件名。 桌面是现有目录,不能作为文件打开...

而且 - 顺便说一句 - 可能需要添加 -S Servername...

更新

找到这个here

每当我收到此消息时,都是因为以下三件事之一:

1) 路径/文件名不正确(检查您的输入/拼写)

2) 文件不存在。 (确保文件在您期望的位置 是)

3) 该文件已被其他应用打开。 (关闭其他应用程序以 释放文件)

对于 1) 和 2) - 请记住路径是相对于 bcp 所在的位置 执行。确保 bcp.exe 可以从它的 上下文。

/肯尼斯

【讨论】:

  • 我已经这样做了,我得到了这个错误 SQLState = S0002, NativeError = 208 错误 = [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Invalid object name 'Testing. bdo.ExportTable'。 SQLState = 37000, NativeError = 11529 Error = [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]无法确定元数据,因为每个代码路径都会导致错误;查看其中一些以前的错误。
  • 好的,我知道了,但我还有一个问题要问你,我设法弄清楚但我遇到了这个问题输入、输出或格式选项需要有效的表名。跨度>
  • @serge,我只在你的命令中看到Testing.bdo.Exporttable。这只是一个简单的错字,你想写dbo
  • 真的很抱歉,但我仍然得到问题 BCP Serge-st-11.Testing.dbo.ExportTable OUT "D:\Work\Sept.2016\"-C -T 我仍然得到同样的问题,对不起,我对 bcp 不太擅长.. 我会很高兴得到这样的结果
  • @serge,您的路径 - 再次 - 没有文件名...使用带有 3 部分标识符的 BCP 并使用 -S ServerName 将服务器名称放在末尾...
【解决方案2】:

如果您通过 xp_cmdshell 运行 BCP,请运行以下命令--> xp_cmdshell 'whoami'; 走 --确保您获得的任何用户值都可以完全访问相关文件

【讨论】:

  • 这个建议解决了我的错误Error = [Microsoft][ODBC Driver 13 for SQL Server]Unable to open BCP host data-file
【解决方案3】:

运行:EXEC master..xp_cmdshell 'DIR C:\Users\Serge\Desktop',这将显示您是否有权访问该路径。

请记住,如果您是远程或通过网络访问 SQL,则输出 ie。 “C:\Users\Serge\Desktop”将是 SQL Server 上的 C 盘,而不是您正在使用的远程 PC。

【讨论】:

    【解决方案4】:

    我知道这是旧的,但您的架构似乎也拼写错误。 C:\Users\Serge>BCP 测试。bdo.Exporttable out "C:\Users\Serge\Desktop" -C -T

    s/b

    C:\Users\Serge>BCP 测试。dbo.Exporttable out "C:\Users\Serge\Desktop" -C -T

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 2020-02-02
      • 2017-07-05
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 2013-08-08
      • 2014-05-14
      • 1970-01-01
      相关资源
      最近更新 更多