OPENROWSET
を使用しようとしている場合 SQL Serverでアドホック分散クエリを実行しますが、「不正な構文」エラーが発生し続け、構文に問題がない場合は、次のいずれかの変数を使用しようとしている可能性があります。引数。
この投稿のタイトルに記載されているように、OPENROWSET
引数に変数を受け入れません。
変数を引数として使用している場合は、これらを文字列リテラルに変更してみてください。
例
実例を示します。
DECLARE @tsql varchar(500);
SET @tsql = 'SELECT * FROM Test.dbo.Cats';
SELECT * FROM OPENROWSET(
'SQLNCLI',
'Server=MyLinkedServer;Trusted_Connection=yes;',
@tsql);
結果:
Msg 102, Level 15, State 1, Line 16 Incorrect syntax near '@tsql'.
Microsoftのドキュメントを確認すると、次のように明示されていることがわかります。
OPENROWSET
引数に変数を受け入れません。
したがって、すべての引数が文字列リテラルになるように上記のコードを変更しても、エラーは発生しなくなります。
SELECT * FROM OPENROWSET(
'SQLNCLI',
'Server=MyLinkedServer;Trusted_Connection=yes;',
'SELECT * FROM Test.dbo.Cats');
結果:
+---------+-------------+ | CatId | CatName | |---------+-------------| | 1 | Meow | | 2 | Fluffy | | 3 | Scratch | | 4 | Bulldog | | 5 | King George | | 6 | Sharp | | 7 | Fritz | | 8 | Garfield | | 9 | Boss | +---------+-------------+