Cách bật Truy vấn phân tán trong Ad Hoc


105

Khi tôi chạy một truy vấn OPENROWSETtrong SQL Server 2000, nó hoạt động.

Nhưng cùng một truy vấn trong SQL Server 2008 tạo ra lỗi sau:

Máy chủ SQL đã chặn quyền truy cập vào STATEMENT 'OpenRowset / OpenDatasource' của thành phần 'Truy vấn phân tán Ad Hoc' vì thành phần này bị tắt như một phần của cấu hình bảo mật cho máy chủ này. Quản trị viên hệ thống có thể cho phép sử dụng 'Truy vấn Phân tán Ad Hoc' bằng cách sử dụng sp_configure


Nhân tiện, bạn nên chú ý đến cảnh báo và thay đổi mã SQL của mình để sử dụng Máy chủ được Liên kết thay vì OPENROWSET.
RBarryYoung

2
@RBarryYoung nó không thực sự là một "cảnh báo" - nó chỉ là một thông báo nói rằng nó chưa được kích hoạt. Nguy hiểm khi kích hoạt điều này là gì?
Conrad

1
nếu một người dùng độc hại có thể đưa SQL vào đâu đó, việc bật tùy chọn này có thể cho phép họ thăm dò các tệp dữ liệu mà họ chọn. Nếu bạn thiết lập nó như một Máy chủ được Liên kết, chỉ các tệp cụ thể - Máy chủ được Liên kết - được hiển thị (và bạn có bảo mật SQL Server tích hợp mà bạn có thể đang sử dụng, v.v.).
Mike M

nhưng tôi làm như tùy chọn này để thử nghiệm nội bộ của tôi và di chuyển dữ liệu ... do đó tìm cách sử dụng nó một lần nữa :)
Mike M

Câu trả lời:


217

Lệnh sau có thể giúp bạn ..

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO

14

Bạn có thể kiểm tra lệnh sau

sp_configure 'show advanced options', 1;
RECONFIGURE;
GO  --Added        
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO

SELECT a.*
FROM OPENROWSET('SQLNCLI', 'Server=Seattle1;Trusted_Connection=yes;',
     'SELECT GroupName, Name, DepartmentID
      FROM AdventureWorks2012.HumanResources.Department
      ORDER BY GroupName, Name') AS a;
GO

Hoặc liên kết tài liệu này


5
bạn cần thêm 'GO' sau 'RECONFIGURE;' nếu không nó là một giải pháp hoàn hảo

1
bạn không cần liên kết máy chủ trước CHỌN của bạn?
Sebastien H.

3

Nếu cập nhật đặc biệt cho danh mục hệ thống "không được hỗ trợ" hoặc nếu bạn nhận được "Msg 5808" thì bạn sẽ cần phải định cấu hình bằng ghi đè như sau:

EXEC sp_configure 'show advanced options', 1
RECONFIGURE with override
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE with override
GO

2
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO

Bạn không cần ĐI sau mỗi dòng
Rob
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.