Jeśli pojawi się komunikat o błędzie Msg 15281, poziom 16 w SQL Server, prawdopodobnie próbujesz uruchomić zapytanie rozproszone ad hoc, ale nie włączono zapytań rozproszonych ad hoc.
Można to łatwo naprawić, włączając zapytania rozproszone ad hoc.
Przykład błędu
Oto przykład kodu, który generuje błąd.
SELECT * FROM OPENROWSET(
'SQLNCLI',
'Server=Homer;Trusted_Connection=yes;',
'SELECT * FROM Music.dbo.vAlbums');
Wynik:
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.
Jak podano w komunikacie o błędzie, administrator systemu może włączyć zapytania rozproszone ad hoc za pomocą sp_configure
systemowa procedura składowana.
Rozwiązanie
Uruchom następujący kod, aby rozwiązać problem.
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE WITH OVERRIDE
GO
Pierwsza część włącza pokaż zaawansowane opcje, które wyświetla sp_configure
Zaawansowane opcje procedury składowanej systemu. Jeśli ta opcja nie jest włączona, otrzymasz kolejny błąd (prawdopodobnie błąd msg 15123), stwierdzający, że opcja konfiguracji nie istnieje lub może być opcją zaawansowaną.
Druga część używa sp_configure
aby włączyć opcję zapytań rozproszonych ad hoc.
Po uruchomieniu tego kodu powinno być możliwe uruchamianie zapytań rozproszonych ad hoc.
Ukryj opcje zaawansowane
Po włączeniu zapytań rozproszonych ad hoc prawdopodobnie powinieneś ponownie ukryć opcje zaawansowane.
EXEC sp_configure 'show advanced options', 0;
GO
RECONFIGURE;
GO