এসকিউএল সার্ভার 2008 আর 2 এন্টারপ্রাইজ সংস্করণ ব্যবহার করে
নিম্নলিখিত বিবৃতি বিবেচনা করুন:
:setvar source_server_name "SERVERNAME\INSTANCENAME"
এসএসকিউসিএমডি মোডে কি টিএসকিউএল ব্যবহার করে সেই মানটি পাওয়া সম্ভব?
কিছুটা এইরকম: :setvar source_server_name = SELECT @@servername
ধন্যবাদ
আপডেট 7/15/2013
নীচে দেওয়া দুটি উত্তর যথেষ্ট পছন্দসই ফলাফল দেয়নি, তাই আমি আরও প্রাসঙ্গিক পেশী যুক্ত করছি।
:setvar source_server_name [myserver]
ভেরিয়েবল উত্স_সেবার_নাম পাঠ্য স্ট্রিংয়ে সেট করা হয়েছে [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
ভেরিয়েবল উত্স_সেসর_নাম আইডি 1 এর জন্য সার্ভারের মানে সেট করা হবে।
আমি সচেতন না বা এটি বের করতে পারে তা নয়।
আপনি যা চেয়েছেন তা প্রতি সেকেন্ড সম্ভব নয়, কারণ এসকিএলসিএমডি ভেরিয়েবলগুলি ক্লায়েন্টের দ্বারা সার্ভারে স্কেল প্রেরণের আগে মূল্যায়ন করা হয়। সুতরাং আপনি স্কেরাল সার্ভারকে এমন কোনও ভেরিয়েবলের মান সেট করতে বলছেন যা এটি কখনও দেখেনি। SqlCmd ভেরিয়েবলগুলির সাথে একটি এসকিউএল স্ক্রিপ্টে একটি এসকিএল প্রোফাইলার ট্রেস চালান এবং আপনি দেখতে পাবেন যে সেগুলি ইতিমধ্যে মূল্যায়ন করা হয়েছে।
—
টিম আবেল