2013-03-11 110 views
1

我已经创建了一个名为Public的文件夹,并取名为C:\驱动器的根目录,并与“Everyone”共享。我也给了NETWORK SERVICE读取权限。但是,当我发布的SQL Server 2008 R2以下查询,错误是“\\ FOO \ PUBLIC \ my.csv”不是一个有效的路径:使用openrowset的无效UNC路径

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路径。

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; 

还有什么检查?谢谢

+0

如果这是一个64位/提供商的问题,你会得到一个提供商的错误消息,但你不是。你在这里的路径是相对于你的SQL Server安装而不是你的客户端。你的服务器和客户端在同一台机器上吗? – 2013-03-12 06:26:17

+0

我已经尝试把该文件夹放在服务器和我的开发PC的根目录上,并试图从两个SSMS这个查询。是否包含在“每个人”中的内置O/S身份像NT SERVICE? – Tim 2013-03-12 11:06:04

+0

当你输入'EXEC master..xp_cmdshell'DIR \\ FOO \ public''时会发生什么。 Yuo可以使用它来“查看”SQL Server看到的内容。另外我注意到在你的错误信息中FOO之前只有一个反斜杠 - 这是一个错字还是错误信息? – 2013-03-12 23:07:03

回答

0

问题已修复。该数据库应该只指向该文件夹,不包括该文件:

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