2013-03-11 3 views
1

Я создал папку с именем Public с корнем моего диска C: \ и поделился ею с «Everyone». Я также дал права чтения NETWORK SERVICE. Но когда я выполняю следующий запрос в SQL Server 2008 R2, ошибка в том, что "\\ Foo \ Public \ my.csv" не правильный путь:Недопустимый UNC-путь с openrowset

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

64-битный драйвер ACE является установлен. Я нахожусь в 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; 

Что еще проверить? Thanks

+0

Если это была проблема с 64-битным/поставщиком, вы получили сообщение об ошибке поставщика, но это не так. Путь, который вы вводите здесь, относится к вашей установке SQL Server, а не к вашему клиенту. Ваш сервер и клиент на одном компьютере? –

+0

Я попытался положить папку в корень как сервера, так и моего ПК разработки, и попробовал этот запрос из SSMS на обоих. Являются ли встроенные идентификаторы O/S, такие как NT SERVICE, включенными в «Everyone»? – Tim

+0

Что происходит, когда вы набираете 'EXEC master..xp_cmdshell 'DIR \\ FOO \ public''. Yuo может использовать это, чтобы «видеть» то, что видит SQL Server. Также я замечаю, что в вашем сообщении об ошибке есть только одна обратная косая черта перед FOO - это опечатка или это сообщение об ошибке? –

ответ

0

Проблема исправлена. База данных должна указывать только на папку и не включать файл:

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