पैरामीटरयुक्त क्वेरी का उपयोग करने का प्रयास करें यहां एक लिंक है http://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/
साथ ही, OpenQuery का उपयोग न करें... चयन को चलाने के लिए इसका उपयोग करें
SELECT * FROM db...table WHERE ref = @ref AND bookno = @bookno
आपके कुछ विकल्पों का वर्णन करने वाले अधिक लेख:
http://support.microsoft.com/kb/314520
दूसरे SQL सर्वर से कनेक्ट करने के लिए T-SQL सिंटैक्स क्या है?
संपादित
नोट:आपका मूल प्रश्न वितरित क्वेरी और लिंक्ड सर्वर के बारे में पूछ रहा था। यह नया कथन किसी वितरित क्वेरी का संदर्भ नहीं देता है। मैं केवल यह मान सकता हूं कि अब आप सीधे डेटाबेस से जुड़ रहे हैं। यहां एक उदाहरण दिया गया है जो काम करना चाहिए। यहां SqlCommand.Parameters का उपयोग करने के लिए एक और संदर्भ साइट है
SqlCommand cmd = new SqlCommand("Select * from Table where [email protected]", con);
cmd.Parameters.Add("@ref", SqlDbType.Int);
cmd.Parameters["@ref"] = 34;
संपादित:
ठीक है जेमी टेलर मैं फिर से आपके प्रश्न का उत्तर देने का प्रयास करूंगा।
आप OpenQuery का उपयोग कर रहे हैं क्योंकि आप शायद लिंक किए गए DB का उपयोग कर रहे हैं
मूल रूप से समस्या यह है कि OpenQuery विधि एक स्ट्रिंग लेती है जिसे आप OpenQuery को भेजे गए स्ट्रिंग के हिस्से के रूप में एक चर पास नहीं कर सकते।
आप इसके बजाय अपनी क्वेरी को इस तरह प्रारूपित कर सकते हैं। संकेतन servername.databasename.schemaname.tablename का अनुसरण करता है। यदि आप ओडीबीसी के माध्यम से लिंक किए गए सर्वर का उपयोग कर रहे हैं तो डेटाबेसनाम और स्कीमानाम को छोड़ दें, जैसा कि नीचे दिखाया गया है
Dim conn As SqlConnection = New SqlConnection("your SQL Connection String")
Dim cmd As SqlCommand = conn.CreateCommand()
cmd.CommandText = "Select * db...table where investor = @investor"
Dim parameter As SqlParameter = cmd.CreateParameter()
parameter.DbType = SqlDbType.Int
parameter.ParameterName = "@investor"
parameter.Direction = ParameterDirection.Input
parameter.Value = 34