अगर आप OPENROWSET
. का इस्तेमाल करने की कोशिश कर रहे हैं SQL सर्वर में एक तदर्थ वितरित क्वेरी चलाने के लिए, लेकिन आपको एक "गलत सिंटैक्स" त्रुटि मिलती रहती है, और आप अपने सिंटैक्स में कुछ भी गलत नहीं देख सकते हैं, यह हो सकता है कि आप इनमें से किसी एक के लिए एक चर का उपयोग करने का प्रयास कर रहे हों तर्क।
जैसा कि इस पोस्ट के शीर्षक में बताया गया है, 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 | +---------+-------------+