Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка при использовании OpenRowset  [new]
Daniil
Member

Откуда:
Сообщений: 4
Почему при попытке выполнении на SQL Server 2000 следующего кода

SELECT * FROM
OPENROWSET('SQLOLEDB.1',
'DRIVER=SQL Server;SERVER=SQL.GDT.MMK.CHEL.SU;UID=vc_domna;
Persist Security Info=False;APP=VC_DOMNA;DATABASE=GRUZ;
AutoTranslate=No;Trusted_Connection=No;'
,
'EXEC shakhov_ves_UGOL')


выдается ошибка:
Ad hoc access to OLE DB provider 'SQLOLEDB.1' has been denied.
You must access this provider through a linked server.
14 июл 03, 07:38    [260140]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при использовании OpenRowset  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Да наверное потому, что провайдера указываешь SQLOLEDB, а строку подключения рисуешь как для MSDASQL.
14 июл 03, 08:11    [260147]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при использовании OpenRowset  [new]
Koloto
Member

Откуда:
Сообщений: 78
Для провайдера OLE DB нужно установить свойство 'Disallow adhoc access' в false. Лично я знаю 2 способа сделать это:

1. При создании линкед сервера через EM выбираешь Provider name как Microsoft OLE DB Provider for SQL Server и нажимаешь кнопку Provider Options. В появившемся окне свойств снимаешь галку 'Disallow adhoc access'.

2. Правишь реестр. В ключе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\SQLOLEDB значение DisallowAdhocProcess устанавливаешь в 0. По-моему, по умолчанию оно и так 0, хотя не уверен. Для верности лучше прописать явно.
14 июл 03, 09:10    [260176]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Ошибка при использовании OpenRowset  [new]
volkandrey
Member

Откуда:
Сообщений: 100
У меня похожая проблема на:
select @@version
Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) Jul 9 2008 14:43:34 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition on Windows NT 5.2 <X86> (Build 3790: Service Pack 2)

Делаю запрос:
select *
from OPENROWSET(
'SQLNCLI10',
'Driver={Microsoft dBase Driver (*.dbf)};DBQ= C:\',
'Select * from VERT_201.DBF')

В ответ ошибка:
Ad hoc access to OLE DB provider 'SQLNCLI10' has been denied. You must access this provider through a linked server.

Чем это лечить в Microsoft SQL Server 2008?
7 июл 09, 12:05    [7385268]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при использовании OpenRowset  [new]
volkandrey
Member

Откуда:
Сообщений: 100
volkandrey,

И не пойму причём тут:
Koloto

1. При создании линкед сервера через EM выбираешь Provider name как Microsoft OLE DB Provider for SQL Server и нажимаешь кнопку Provider Options. В появившемся окне свойств снимаешь галку 'Disallow adhoc access'.


Я думал что OPENROWSET работает без создания линкед сервера.?
7 июл 09, 12:10    [7385295]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при использовании OpenRowset  [new]
dima.dp.ua
Member

Откуда:
Сообщений: 42
volkandrey
В ответ ошибка:
Ad hoc access to OLE DB provider 'SQLNCLI10' has been denied.

Configuration Tools -> SQL Server Surface Area Configuration -> Surface Area Configuration for Features -> Ad Hoc Remote Queries [x] Enable OPENROWSET and OPENDATASOURCE support.
7 июл 09, 13:55    [7386098]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при использовании OpenRowset  [new]
volkandrey
Member

Откуда:
Сообщений: 100
dima.dp.ua
volkandrey
В ответ ошибка:
Ad hoc access to OLE DB provider 'SQLNCLI10' has been denied.

Configuration Tools -> SQL Server Surface Area Configuration -> Surface Area Configuration for Features -> Ad Hoc Remote Queries [x] Enable OPENROWSET and OPENDATASOURCE support.


Да вот только, где взять, или найти SQL Server Surface Area Configuration в Microsoft SQL Server 2008? Не нашёлся пункт Ad Hoc Remote Queries так же и в sp_configure.
Где в Microsoft SQL Server 2008 включается OPENROWSET and OPENDATASOURCE?
7 июл 09, 14:55    [7386575]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при использовании OpenRowset  [new]
dima.dp.ua
Member

Откуда:
Сообщений: 42
http://msdn.microsoft.com/en-us/library/cc281850.aspx
7 июл 09, 15:23    [7386806]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при использовании OpenRowset  [new]
volkandrey
Member

Откуда:
Сообщений: 100
dima.dp.ua
http://msdn.microsoft.com/en-us/library/cc281850.aspx

По этой ссылке
1. In the Properties dialog box, set Start Mode to Automatic.
Так и есть стоит Automatic

2. To enable a protocol for remote connections, set the Enabled box to Yes.
Shared Memory 1 Enabled
_TCP/IP 2 Enabled
_Named Pipes 3 Enabled
_VIA 4 Enabled

Вот так стоит по второму пункту!


Я клиент на сервере у меня ошибка:
Ad hoc access to OLE DB provider 'SQLNCLI10' has been denied. You must access this provider through a linked server.

У администратора вот такая ошибка с тем же запросом openrowset:
OLE DB provider "MICROSOFT.JET.OLEDB.4.0" for linked server "(null)" returned message "Unspecified error".
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "SQLNCLI10" for linked server "(null)"
7 июл 09, 17:10    [7387851]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при использовании OpenRowset  [new]
volkandrey
Member

Откуда:
Сообщений: 100
Либо такая, пробывал разных провайдеров.
OLE DB provider "SQLNCLI10" for linked server "(null)" returned message "Unspecified error".
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "SQLNCLI10" for linked server "(null)"
7 июл 09, 17:13    [7387873]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при использовании OpenRowset  [new]
dima.dp.ua
Member

Откуда:
Сообщений: 42
А до конца дочитать артикул по моей ссылке не пробовали?

автор
To open the SQL Server Management Studio
On the Start menu, point to All Programs, point to Microsoft SQL Server 2008, and then click SQL Server Management Studio.

To configure Policy-Based Management
In Management Studio, connect to an instance of Database Engine, expand Management, and then expand Policy Management.

Configure Policy-Based Management by using the following three facets:

Surface Area Configuration

Surface Area Configuration for Analysis Services

Surface Area Configuration for Reporting Services

The surface area configuration features that are turned off by default should not be turned on unless they are required for a specific business need.


Или по этому артикулу если через t-sql
http://msdn.microsoft.com/en-us/library/ms187569.aspx
sp_configure 'show advanced options', 1
RECONFIGURE
sp_configure 'Ad Hoc Distributed Queries', 1
RECONFIGURE
GO
7 июл 09, 17:55    [7388202]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при использовании OpenRowset  [new]
volkandrey
Member

Откуда:
Сообщений: 100
dima.dp.ua


Или по этому артикулу если через t-sql
http://msdn.microsoft.com/en-us/library/ms187569.aspx
sp_configure 'show advanced options', 1
RECONFIGURE
sp_configure 'Ad Hoc Distributed Queries', 1
RECONFIGURE
GO


Для параметра
Ad Hoc Distributed Queries
это сделал давно. Вот параметры которые стоят: на картинке.
Только вот я так понимаю должен где-то меняться параметр
Ad Hoc Remote Queries


К сообщению приложен файл. Размер - 0Kb
8 июл 09, 09:36    [7389570]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при использовании OpenRowset  [new]
volkandrey
Member

Откуда:
Сообщений: 100
Только вот где?

Ad Hoc Distributed Queries - Включает распределённые запросы. Включено!


Ad Hoc Remote Queries - а этот параметр должен что включать? Удалённые?

Disallow adhoc access - И надо ли менять тут что-то? И это делается либо через реестр, либо в свойствах линкед сервера? Только причём тут линкед сервер, если меняются параметры провайдера, именно для того чтоб воспользоваться OPENROWSET, без линкед сервера?

Koloto
Для провайдера OLE DB нужно установить свойство 'Disallow adhoc access' в false.

1. При создании линкед сервера через EM выбираешь Provider name как Microsoft OLE DB Provider for SQL Server и нажимаешь кнопку Provider Options. В появившемся окне свойств снимаешь галку 'Disallow adhoc access'.

2. Правишь реестр. В ключе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\SQLOLEDB значение DisallowAdhocProcess устанавливаешь в 0. По-моему, по умолчанию оно и так 0, хотя не уверен. Для верности лучше прописать явно.
8 июл 09, 09:48    [7389606]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при использовании OpenRowset  [new]
volkandrey
Member

Откуда:
Сообщений: 100
DisallowAdhocProcess
По ветке:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\SQLOLEDB
Вообще Providers отсутствует! Создал вручную на серверной машине, нужно ли перезапускать сервер, чтоб применился параметр? И нужно ли создать такую же ветку на клиенте?

И вообще от чего зависит, что этих параметров вообще нет, может что-то не установлено?
8 июл 09, 14:33    [7391828]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при использовании OpenRowset  [new]
volkandrey
Member

Откуда:
Сообщений: 100
Ещё непонятность: по ссылке
[url=]http://support.microsoft.com/kb/256052[/url]
Параметр DisallowAdhocAccess меняется на ноль.
А выше по тексту вот такой параметр DisallowAdhocProcess

Так какой нужен по ветке реестра?
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\SQLOLEDB
8 июл 09, 14:53    [7391985]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить