Ако получите съобщение за грешка 15281, ниво 16 в SQL Server, има вероятност да се опитвате да изпълните ad hoc разпределена заявка, но не сте активирали ad hoc разпределени заявки.
Това може да се поправи лесно чрез активиране на ad hoc разпределени заявки.
Пример за грешката
Ето пример за код, който създава грешката.
SELECT * FROM OPENROWSET(
'SQLNCLI',
'Server=Homer;Trusted_Connection=yes;',
'SELECT * FROM Music.dbo.vAlbums');
Резултат:
Msg 15281, Level 16, State 1, Line 1 SQL Server blocked access to STATEMENT 'OpenRowset/OpenDatasource' of component 'Ad Hoc Distributed Queries' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Ad Hoc Distributed Queries' by using sp_configure. For more information about enabling 'Ad Hoc Distributed Queries', search for 'Ad Hoc Distributed Queries' in SQL Server Books Online.
Както се казва в съобщението за грешка, системният администратор може да активира ad hoc разпределени заявки, като използва sp_configure
системна съхранена процедура.
Решение
Изпълнете следния код, за да отстраните проблема.
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE WITH OVERRIDE
GO
Първата част дава възможност за показване на разширени опции, което показва sp_configure
Разширени опции за запаметени процедури в системата. Ако това не е активирано, ще получите друга грешка (вероятно съобщение за грешка 15123), в която се посочва, че опцията за конфигурация или не съществува, или че може да е разширена опция.
Втората част използва sp_configure
за да активирате опцията за ad hoc разпределени заявки.
След като изпълните този код, трябва да можете да изпълнявате ad hoc разпределени заявки.
Скриване на разширените опции
След като активирате ad hoc разпределените заявки, вероятно трябва отново да скриете разширените опции за показване.
EXEC sp_configure 'show advanced options', 0;
GO
RECONFIGURE;
GO