Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Napraw „SQL Server zablokował dostęp do STATEMENT„ OpenRowset/OpenDatasource” komponentu „Kwerendy rozproszone ad hoc”

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dowiedz się, dlaczego nie udało się wysłać wiadomości e-mail w programie SQL Server (T-SQL)

  2. Uzyskaj znak między pierwszymi 2 znakami specjalnymi w SQL

  3. scope_identity a ident_current

  4. Co to jest impas w SQL Server?

  5. 4 funkcje do sformatowania liczby do 2 miejsc dziesiętnych w SQL Server