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

OPENROWSET nie akceptuje zmiennych dla swoich argumentów (SQL Server)

Jeśli próbujesz użyć OPENROWSET uruchomić zapytanie rozproszone ad hoc w programie SQL Server, ale wciąż pojawia się błąd „nieprawidłowej składni” i po prostu nie widać niczego złego w składni, może to oznaczać, że próbujesz użyć zmiennej dla jednego z argumenty.

Jak wspomniano w tytule tego posta, OPENROWSET nie akceptuje zmiennych dla swoich argumentów.

Jeśli używasz zmiennych jako argumentów, spróbuj zmienić je na literały łańcuchowe.

Przykład

Oto przykład do zademonstrowania.

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

Wynik:

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

Jeśli sprawdzisz dokumentację firmy Microsoft, zobaczysz, że wyraźnie stwierdza ona, że:

OPENROWSET nie akceptuje zmiennych dla swoich argumentów.

Jeśli więc zmienimy powyższy kod tak, aby wszystkie argumenty były literałami łańcuchowymi, nie otrzymamy już błędu.

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

Wynik:

+---------+-------------+
| 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. Jak zmienić poziom zgodności bazy danych z T-SQL?

  2. Jak wyświetlić sortowanie kolumny w SQL Server (T-SQL)

  3. 4 typy danych do wycofania w SQL Server

  4. Obrót wielu kolumn w T-SQL

  5. Wstawiam tylko wiersz, jeśli jeszcze go tam nie ma