SQL Server 2008 R2 एंटरप्राइज़ संस्करण का उपयोग करना
निम्नलिखित कथन पर विचार करें:
:setvar source_server_name "SERVERNAME\INSTANCENAME"
क्या SQLQL मोड में TSQL का उपयोग कर उस मूल्य को प्राप्त करना संभव है
कुछ इस तरह: :setvar source_server_name = SELECT @@servername
धन्यवाद
अपडेट 7/15/2013
नीचे दिए गए दो जवाबों ने वांछित परिणाम नहीं दिया, इसलिए मैं एक अधिक प्रासंगिक परीक्षा जोड़ रहा हूं।
:setvar source_server_name [myserver]
चर source_server_name पाठ स्ट्रिंग पर सेट है [myserver_1]
मैं ऐसा करने में सक्षम होना चाहता हूं:
create table #tmp(
id int identity(1,1),
server sysname
)
insert into #tmp values('myserver_1'),('myserver_2');
:setvar source_server_name = SELECT server FROM #tmp WHERE id = 1
select '$(source_server_name)'
(No column name)
myserver_1
वैरिएबल source_server_name को id 1 के सर्वर में मान पर सेट किया जाएगा।
ऐसा नहीं है कि मैं इसके बारे में जानता हूं, या इसका पता लगा सकता हूं।
आप जो पूछते हैं वह प्रति-से संभव नहीं है, क्योंकि sqlcmd वेरिएबल्स का मूल्यांकन क्लाइंट द्वारा किया जाता है, क्योंकि sql को कभी भी सर्वर पर भेजा जाता है। तो आप एक चर के मान को सेट करने के लिए sql सर्वर से पूछ रहे हैं जिसे वह कभी नहीं देखता है। Sqlcmd चर के साथ एक sql स्क्रिप्ट पर एक sql प्रोफाइलर ट्रेस चलाएँ और आप देखेंगे कि वे सभी का मूल्यांकन पहले ही कर चुके हैं।
—
टिम अबेल