আমার নতুন চাকরিতে, প্রতিটি সার্ভারে আমাদের একাধিক নামকরণ রয়েছে। যেমন
- Server1 \ দেব
- Server1 \ DevIntegrated
- Server1 \ QA তে
আমার সেই কার্যগুলিতে একটি এসকিউএল পাওয়ারশেল স্ক্রিপ্ট রয়েছে যা ওএসগুলিতে কল করে, অনুরোধ করে Foo.exe
তবে একটি কমান্ড লাইন প্যারামিটার (সংযোগের স্ট্রিং) পাস করতে হবে। প্রতিটি উদাহরণে একটি এসকিউএল এজেন্ট কাজ বিদ্যমান থাকবে, টাইপ পাওয়ারশেলের ধাপের সাথে, বর্তমান প্রসঙ্গটি কী তা জানতে হবে। অর্থাত্ এই মৃত্যুদন্ডটি ডিভ ইন্টিগ্রেটেড থেকে শুরু হয়েছিল।
আমার প্রতিটি স্ক্রিপ্ট দিয়ে শুরু করার ইচ্ছা নেই ...
$thisInstance = "Dev"
... বিশেষত যেহেতু আমাকে এডিট করতে হবে যখন আমরা আসন্ন মাসগুলিতে পরিবেশে (নতুন সার্ভার এবং নামযুক্ত উদাহরণগুলি) স্থানান্তর করি।
যদি আমি এসকিউএলপিএস শুরু করি, তবে আমি গেট-লোকেশন বা চলমান ফলাফলগুলি কাটা এবং ডাইস করে আমার উদাহরণটি নির্ধারণ করতে পারি
(Invoke-Sqlcmd -Query "SELECT @@servername AS ServerName" -SuppressProviderContextWarning).ServerName
যখন এসকিউএল এজেন্ট পাওয়ারশেল টাইপের কাজ শুরু করে, তখন এটি সি: \ উইন্ডোজ \ Get-Location
সিস্টেম 32 এ শুরু হয় এবং এসকিউএলসিভারের প্রসঙ্গে নয় বলে রুটটি কাজ করে না। আমি সেই প্রসঙ্গে পরিবর্তন করতে পারি তবে আমি এসকিউএল সার্ভারের "রুট" এ থাকব এবং আমার কোন দৃষ্টান্তটি থাকতে হবে তা জানব না the Invoke-Sqlcmd
রুটটি ব্যবহার করা একই কারণে হয় না (প্রযুক্তিগতভাবে, এটি সেখানে সময় হিসাবে বেরিয়ে আসে) কোনও ডিফল্ট উদাহরণ নয়)
আমার জ্ঞানের সর্বোপরি, আমি সমস্ত বুনিয়াদি "জিনিস" গণনা করেছি যে আমি চাকরিতে লগতে পারি তবে কিছুই দেখায় বলে মনে হয় না SQLSERVER:\SQL\Server1\DevIntegrated
Get-ChildItem
Get-Host
Get-Location
Get-Process
Get-PSDrive
Get-PSProvider
Get-Service
Get-TraceSource
Get-Variable
Get-Process
দেখে মনে হচ্ছে যে আমি এটি ব্যবহার করতে পারি এবং উদাহরণস্বরূপ এবং স্পিডগুলির সাথে মিল রেখে জিনিসগুলিকে একসাথে আবদ্ধ করার চেষ্টা করছিলাম তবে এটি কেবল নরক থেকে রক্তাক্ত-হ্যাকের মতো শোনাচ্ছে। এখানে কিছু বেসিক অবশ্যই থাকতে হবে যা আমি মিস করছি, কেউ কি কিছুটা আলোকপাত করতে পারে?
পাওয়ারশেলের বিকল্পগুলি তদন্ত করা হয়েছে
আমি অন্যান্য কাজের ধরণগুলি ব্যবহার করে তদন্ত করেছি এবং সন্তোষজনক রেজোলিউশন পাইনি। গবেষণা নির্দেশ করে যে এসকিউএল এজেন্টের অধীনে থাকা পাওয়ারশেলটি এসকিউএলপিএস ছিল এবং এজেন্টের ডান ক্লিক করে এটির একটি সূচনা শুরু করে স্বয়ংক্রিয়ভাবে আমাকে সঠিক জায়গায় ফেলেছে dropped আমি যখন আমার ইন্টারেক্টিভ কোডটি চাকরীর পদক্ষেপে আটকালাম তখনই আমি আগে বর্ণিত পার্থক্যটি শিখেছি।
কাজের ধরণের ওএস আমাকে একটি অভিন্ন অবস্থায় ফেলেছে যে কোন উদাহরণটি কমান্ড শেলটিতে ফেলেছে তা নির্ধারণের জন্য আমি কোনও উপায় খুঁজে পাচ্ছি না। অবশ্যই, আমি sqlcmd করতে পারি এবং এর মান পেতে @@servername
পারি তবে আমি যদি sqlcmd শুরু করার জন্য কী সংযোগটি জানতাম তবে আমার ডাটাবেসটি জিজ্ঞাসা করার প্রয়োজন হবে না;)
টিএসকিউএল সম্ভবত সক্ষম হয়ে থাকলে কাজ করতে পারে xp_cmdshell
তবে আমি নিশ্চিত না যে সেগুলি --- সরকারি সুবিধা চালু আছে কিনা এবং তারা অ-ডিফল্ট সেটিংসে স্থির থাকতে পারে। তারপরেও, আমি গতিশীল এসকিউএল দিয়ে ফিউটিংয়ে আটকে আছি এবং পাওয়ারশেল যে .ণ দেয় তা প্রকাশ এবং শক্তি হারিয়ে ফেলছে।
কিছুটা কুরুচিপূর্ণ অবস্থায়, আমি ভেবেছিলাম প্রথম ধাপে একটি পরিবর্তনশীল সংজ্ঞায়িত করে উত্তরসূরী পদক্ষেপগুলিতে প্রেরণ করব তবে গবেষণাটি নিবন্ধটি একাধিক কাজের পদক্ষেপগুলি পরিচালনা করেছে (বিওএল)
কাজের পদক্ষেপগুলি স্ব-অন্তর্ভুক্ত থাকতে হবে। যে, একটি কাজ কাজের পদক্ষেপের মধ্যে বুলিয়ান মান, তথ্য বা সংখ্যাসূচক মান পাস করতে পারে না। আপনি তবে স্থায়ী টেবিল বা গ্লোবাল অস্থায়ী সারণী ব্যবহার করে একটি ট্রান্সঅ্যাক্ট-এসকিউএল কাজের পদক্ষেপ থেকে অন্যটিতে পাস করতে পারেন। আপনি চাকরীর পদক্ষেপগুলি থেকে মানগুলি পাস করতে পারেন যা ফাইলগুলি ব্যবহার করে এক কাজের পদক্ষেপ থেকে অন্য কাজের ধাপে এক্সিকিউটেবল প্রোগ্রামগুলি চালায়।
আমি একটি সুপরিচিত ফাইল / পরিবেশের ভেরিয়েবল / রেজিস্ট্রি সেটিং এর মতো সাধারণ কৌশলগুলি ব্যবহার করতে পারি না Foo.exe
কারণ এটি উদাহরণস্বরূপ একযোগে কার্যকর হওয়া আটকাবে।
টি এল; ডিআর:
PowerShell প্রকারের একটি এসকিউএল এজেন্ট কাজের পদক্ষেপে, আপনি কীভাবে এসকিউএল সার্ভারের প্রসেসটি চালু করেছিলেন তা নির্ধারণ করতে পারবেন?