Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

OPENROWSET không chấp nhận các biến cho các đối số của nó (SQL Server)

Nếu bạn đang cố gắng sử dụng OPENROWSET để chạy một truy vấn phân tán đặc biệt trong SQL Server, nhưng bạn vẫn gặp lỗi "cú pháp không chính xác" và bạn không thể thấy bất kỳ điều gì sai với cú pháp của mình, có thể là bạn đang cố gắng sử dụng một biến cho một trong các các đối số.

Như đã đề cập trong tiêu đề của bài đăng này, OPENROWSET không chấp nhận các biến cho các đối số của nó.

Nếu bạn đang sử dụng các biến làm đối số, hãy thử thay đổi chúng thành các ký tự chuỗi.

Ví dụ

Đây là một ví dụ để chứng minh.

DECLARE @tsql varchar(500);
SET @tsql = 'SELECT * FROM Test.dbo.Cats';
SELECT * FROM OPENROWSET(
    'SQLNCLI', 
    'Server=MyLinkedServer;Trusted_Connection=yes;', 
    @tsql);

Kết quả:

Msg 102, Level 15, State 1, Line 16
Incorrect syntax near '@tsql'.

Nếu bạn kiểm tra tài liệu của Microsoft, bạn có thể thấy rằng nó tuyên bố rõ ràng rằng:

OPENROWSET không chấp nhận các biến cho các đối số của nó.

Vì vậy, nếu chúng tôi thay đổi đoạn mã trên để tất cả các đối số là chuỗi ký tự, chúng tôi sẽ không còn gặp lỗi nữa.

SELECT * FROM OPENROWSET(
    'SQLNCLI', 
    'Server=MyLinkedServer;Trusted_Connection=yes;', 
    'SELECT * FROM Test.dbo.Cats');

Kết quả:

+---------+-------------+
| CatId   | CatName     |
|---------+-------------|
| 1       | Meow        |
| 2       | Fluffy      |
| 3       | Scratch     |
| 4       | Bulldog     |
| 5       | King George |
| 6       | Sharp       |
| 7       | Fritz       |
| 8       | Garfield    |
| 9       | Boss        |
+---------+-------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi ‘datetime2’ thành ‘datetime’ trong SQL Server (Ví dụ T-SQL)

  2. Cách lấy danh sách các cột có Ràng buộc Duy nhất trong Cơ sở dữ liệu SQL Server - Hướng dẫn SQL Server / TSQL Phần 98

  3. Chọn N hàng trong SQL Server

  4. Trả lại tất cả các hàng từ một phân vùng cụ thể trong SQL Server (T-SQL)

  5. Cách kết nối với một số máy chủ SQL trong một cú nhấp chuột (Nhóm máy chủ đã đăng ký) - Hướng dẫn SQL Server / TSQL Phần 5