এসকিউএলসিএমডি মোডে ভেরিয়েবল সেট করা হচ্ছে


13

এসকিউএল সার্ভার 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 এর জন্য সার্ভারের মানে সেট করা হবে।


আমি সচেতন না বা এটি বের করতে পারে তা নয়।

1
আপনি যা চেয়েছেন তা প্রতি সেকেন্ড সম্ভব নয়, কারণ এসকিএলসিএমডি ভেরিয়েবলগুলি ক্লায়েন্টের দ্বারা সার্ভারে স্কেল প্রেরণের আগে মূল্যায়ন করা হয়। সুতরাং আপনি স্কেরাল সার্ভারকে এমন কোনও ভেরিয়েবলের মান সেট করতে বলছেন যা এটি কখনও দেখেনি। SqlCmd ভেরিয়েবলগুলির সাথে একটি এসকিউএল স্ক্রিপ্টে একটি এসকিএল প্রোফাইলার ট্রেস চালান এবং আপনি দেখতে পাবেন যে সেগুলি ইতিমধ্যে মূল্যায়ন করা হয়েছে।
টিম আবেল

উত্তর:


9

আমি মনে করি আপনার ফলাফলগুলিকে একটি ফাইলে আউটপুট তৈরি করতে হবে এবং সেগুলি আবার ফিরিয়ে আনা দরকার this

:setvar MyDir "C:\scripts"
:OUT $(MyDir)\test.txt
PRINT ':SETVAR ServerName ''' + @@SERVERNAME + ''''
GO
:OUT stdout
:r $(MyDir)\test.txt
GO
SELECT $(ServerName)

আপনি এখানে আরও উদাহরণ দেখতে পারেন ।


ধন্যবাদ. Ive ইতিমধ্যে কাজ ছেড়ে গেছে তাই আমি সোমবার আপনার পরামর্শটি চেষ্টা করব
ক্রেগ এফ্রেইন

আমি আমার প্রশ্ন আপডেট করেছি
ক্রেগ এফ্রেইন

এই উত্তরটি সবচেয়ে কার্যকর হিসাবে প্রমাণিত।
ক্রেগ এফ্রেইন

1
আমি এখানে গুরুত্বপূর্ণ অংশটি অনুমান করি যে আপনার 1 টির জন্য আলাদা ব্যাচ থাকতে হবে) SETVAR ফাইল তৈরি করতে হবে, 2) স্ক্রিপ্ট ভেরিয়েবলটি আরম্ভ করার জন্য এটি সম্পাদন করুন, এবং, 3) স্ক্রিপ্ট ভেরিয়েবলটি ব্যবহার করুন।
অ্যান্ড্রি এম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.