Nếu bạn gặp lỗi Msg 15281, Cấp 16 trong SQL Server, rất có thể bạn đang cố chạy truy vấn phân phối đặc biệt, nhưng bạn chưa bật truy vấn phân phối đặc biệt.
Điều này có thể được khắc phục dễ dàng bằng cách bật các truy vấn phân tán đặc biệt.
Ví dụ về lỗi
Dưới đây là một ví dụ về mã tạo ra lỗi.
SELECT * FROM OPENROWSET(
'SQLNCLI',
'Server=Homer;Trusted_Connection=yes;',
'SELECT * FROM Music.dbo.vAlbums');
Kết quả:
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.
Khi thông báo lỗi nêu rõ, quản trị viên hệ thống có thể kích hoạt các truy vấn phân tán đặc biệt bằng cách sử dụng sp_configure
hệ thống lưu trữ thủ tục.
Giải pháp
Chạy mã sau để khắc phục sự cố.
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE WITH OVERRIDE
GO
Phần đầu tiên cho phép hiển thị các tùy chọn nâng cao, hiển thị sp_configure
hệ thống lưu trữ các tùy chọn nâng cao thủ tục. Nếu điều này không được bật, bạn sẽ gặp một lỗi khác (có thể là lỗi trong tin nhắn 15123), cho biết rằng tùy chọn cấu hình không tồn tại hoặc nó có thể là một tùy chọn nâng cao.
Phần thứ hai sử dụng sp_configure
để bật tùy chọn truy vấn phân tán đặc biệt.
Sau khi chạy mã đó, bạn sẽ có thể chạy các truy vấn phân tán đặc biệt.
Ẩn các tùy chọn nâng cao
Khi bạn đã bật truy vấn phân phối đặc biệt, bạn có thể nên ẩn lại các tùy chọn nâng cao hiển thị.
EXEC sp_configure 'show advanced options', 0;
GO
RECONFIGURE;
GO