【问题标题】:invalid UNC path with openrowset使用 openrowset 的 UNC 路径无效
【发布时间】:2013-02-27 00:27:57
【问题描述】:

我在 C:\drive 的根目录下创建了一个名为 Public 的文件夹,并与“所有人”共享它。我还授予了 NETWORK SERVICE 读取权限。但是当我在 SQL Server 2008-R2 中发出以下查询时,错误是“\\FOO\public\my.csv”不是有效路径:

SELECT * 
FROM OPENROWSET (
  'Microsoft.ACE.OLEDB.12.0', 
    'Text;Database=\\FOO\public\my.csv; ', 
    'SELECT * from my.csv'
    )

已安装 ACE 的 64 位驱动程序。我在 Windows 7 x64 上。它是 64 位版本的 SQL Server。我的电脑的机器名称是“FOO”。它也不适用于简单的 c:\public 路径。

用于链接服务器“(null)”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0” 返回消息“'\FOO\public\my.csv' 不是有效路径。确保 路径名拼写正确并且您已连接到 文件所在的服务器。”。

我已经这样配置了服务器:

exec sp_configure 'show advanced options', 1
RECONFIGURE;
exec sp_configure 'Ad Hoc Distributed Queries', 1
RECONFIGURE;

还有什么要检查的?谢谢

【问题讨论】:

  • 如果是 64 位/提供商问题,您会收到提供商错误消息,但不是。您在此处输入的路径是相对于您的 SQL Server 安装的,而不是您的客户端。您的服务器和客户端是否在同一台机器上?
  • 我已经尝试将文件夹放在服务器和我的开发 PC 的根目录下,并在两者上都尝试了 SSMS 的此查询。 “Everyone”中是否包含 NT SERVICE 等内置 O/S 身份?
  • 当您输入 EXEC master..xp_cmdshell 'DIR \\FOO\public' 时会发生什么。 Yuo 可以使用它来“查看”SQL Server 看到的内容。我还注意到在您的错误消息中 FOO 之前只有一个反斜杠 - 这是一个错字还是错误消息?
  • 感谢您的额外建议。我明天早上上班试试。错误消息中 FOO 之前的单个反斜杠实际上是 Stackoverflow 人工制品。我必须对其进行编辑并添加三个反斜杠,以便其中两个出现在这里。 \\\FOO

标签: sql-server-2008-r2 unc openrowset


【解决方案1】:

问题已解决。数据库应该只指向文件夹而不包括文件:

        'Text;Database=\\FOO\public; '

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多