PAGE-093© Peter A. Carter 2019 — DOI متنی: doi.org/10.1007/978-1-4842-5089-1_3
فصل 3 — نصب Server Core
چون SQL Server از Remote Installation پشتیبانی نمیکند و Windows Server Core فقط CLI دارد و GUI ارائه نمیکند، نصب SQL Server روی Windows Server Core باید بهصورت Command-line انجام شود. همچنین میتوان از Configuration File برای Installationهای Consistent و Repeatable استفاده کرد.
این فصل ابتدا ملاحظات نصب SQL Server روی Windows Server Core را مرور میکند و سپس روش Installation روی این Platform را نشان میدهد. همچنین استفاده از Configuration File و نقش آن در سادهسازی Installationهای آینده و Enforcement مربوط به Consistency بررسی میشود.
در فصل 1 محدودیتهای SQL Server روی Windows Server Core مطرح شد: بعضی Featureها مانند Reporting Services، Master Data Services و Data Quality Services پشتیبانی نمیشوند و برخی دیگر مانند Management Tools و Distributed Replay Client فقط بهصورت Remote پشتیبانی میشوند. باید Operational Supportability در Skillهای مختلف سازمان، از جمله PowerShell Proficiency و Compatibility ابزارهای عملیاتی، وجود داشته باشد.
نصب Instance
نصب SQL Server در Windows Server Core شامل اجرای setup.exe از PowerShell Terminal است. setup.exe در Root Directory مربوط به SQL Server Installation Media قرار دارد. هنگام اجرا میتوانید Switch و Parameterهایی ارسال کنید که برای Configuration Instance استفاده میشوند.
نکته: همین Process را در صورت نیاز میتوان برای نصب SQL Server روی نسخه GUI-based Windows نیز استفاده کرد.
PAGE-094پارامترهای الزامی
اگرچه بسیاری از Switchها و Parameterها اختیاری هستند، برخی همیشه باید وجود داشته باشند. هنگام نصب Stand-alone Instance مربوط به Database Engine، Parameterهای جدول 3-1 الزامیاند.
جدول 3-1 — Required Parameters| Parameter | کاربرد |
|---|
| /IACCEPTSQLSERVERLICENSETERMS | تأیید پذیرش SQL Server License Terms. |
| /ACTION | عمل موردنظر مانند Install یا Upgrade. |
| /FEATURES یا /ROLE | Featureهایی که باید نصب شوند. |
| /INSTANCENAME | نام اختصاصیافته به Instance. |
| /SQLSYSADMINACCOUNTS | Windows Security Contextهایی که Administrative Permission در Database Engine Instance دریافت میکنند. |
| /AGTSVCACCOUNT | Account اجرای SQL Server Agent Service. |
| /SQLSVCACCOUNT | Account اجرای Database Engine Service. |
| /qs | Unattended Install. در Windows Server Core الزامی است چون Installation Wizard پشتیبانی نمیشود. |
IACCEPTSQLSERVERLICENSETERMS Switch
این یک Simple Switch برای نشاندادن پذیرش License Terms است و Value جداگانهای دریافت نمیکند.
PAGE-095ACTION Parameter
برای Basic Installation یک Stand-alone Instance، Value مربوط به /ACTION برابر install است؛ جدول 3-2 همه Valueهای ممکن را نشان میدهد.
جدول 3-2 — Valueهای قابل قبول برای /ACTION| Value | کاربرد |
|---|
| install | نصب Stand-alone Instance. |
| PrepareImage | آمادهسازی Vanilla Stand-alone Image بدون جزئیات خاص Account، Computer یا Network. |
| CompleteImage | تکمیل Prepared Stand-alone Image با افزودن جزئیات Account، Computer و Network. |
| Upgrade | Upgrade Instance از SQL Server 2012، 2014، 2017 یا 2019. |
| EditonUpgrade | Upgrade SQL Server 2019 از Edition پایینتر مانند Developer به بالاتر مانند Enterprise. |
| Repair | Repair یک Instance خراب. |
| RebuildDatabase | Rebuild System Databaseهای خراب. |
| Uninstall | Uninstall یک Stand-alone Instance. |
| InstallFailoverCluster | نصب Failover Clustered Instance. |
| PrepareFailoverCluster | آمادهسازی Vanilla Clustered Image بدون جزئیات Account، Computer یا Network. |
| CompleteFailoverCluster | تکمیل Prepared Clustered Image. |
| AddNode | افزودن Node به Failover Cluster. |
| RemoveNode | حذف Node از Failover Cluster. |
FEATURES Parameter
/FEATURES یک فهرست Comma-delimited از Featureهای مورد نصب را مشخص میکند؛ همه Featureها روی Windows Server Core قابل استفاده نیستند.
PAGE-096جدول 3-3 — Valueهای قابل قبول /FEATURES| Value | روی Windows Core | توضیح |
|---|
| SQL | NO | Full SQL Engine شامل Full Text، Replication و Data Quality Server. |
| SQLEngine | YES | Database Engine. |
| FullText | YES | Full Text Search. |
| Replication | YES | Replication Components. |
| DQ | NO | Data Quality Server. |
| PolyBase | YES | PolyBase Components. |
| AdvancedAnalytics | YES | Machine Learning Solutions و In-Database R Services. |
| SQL_INST_MR | YES | R Packageها برای Machine Learning. |
| SQL_INST_MPY | YES | Anaconda و Python Packageها برای Machine Learning. |
| AS | YES | Analysis Services. |
| DQC | NO | Data Quality Client. |
| IS | YES | Integration Services. |
| MDS | NO | Master Data Services. |
| Tools | NO | همه Client Toolها. |
| BC | NO | Backward Compatibility Components. |
| Conn | YES | Connectivity Components. |
| DREPLAY_CTLR | NO | Distributed Replay Controller. |
| DREPLAY_CLT | NO | Distributed Replay Client. |
| SNAC_SDK | NO | Client Connectivity SDK. |
| SDK | NO | Client Tools SDK. |
| LocalDB | YES | Execution Mode مربوط به SQL Server Express برای Application Developerها. |
PAGE-097نکته: اگر Featureهای دیگری مانند Analysis Services یا Integration Services نصب کنید، Parameterهای الزامی دیگری نیز اضافه میشوند.
Role Parameter
بهجای مشخصکردن Feature List با /FEATURES، میتوان SQL Server را در یک Predefined Role با /ROLE نصب کرد.
جدول 3-4 — Valueهای /ROLE| Value | توضیح |
|---|
| SPI_AS_ExistingFarm | نصب SSAS بهعنوان PowerPivot Instance در SharePoint Farm موجود. |
| SPI_AS_NewFarm | نصب Database Engine و SSAS بهعنوان PowerPivot Instance در SharePoint Farm جدید و پیکربندینشده. |
| AllFeatures_WithDefaults | نصب همه Featureهای SQL Server و Componentهای آن. نویسنده جز در شرایط بسیار خاص توصیه نمیکند، چون Feature اضافی Security و Resource Utilization Footprint را افزایش میدهد. |
Basic Installation
هنگام کار با Command-line Parameterهای setup.exe، Ruleهای Syntax جدول 3-5 باید رعایت شوند.
PAGE-098نکته: برای Text Parameter، Quote فقط وقتی لازم است که Value دارای Space باشد؛ بااینحال همیشه قراردادن Quote Good Practice است.
با فرض اینکه در Root Directory Installation Media هستید، Listing 3-1 Syntax مربوط به PowerShell برای نصب Database Engine، Replication و Client Connectivity را نشان میدهد. همه Optional Parameterها Default هستند، بهجز Collation که روی Windows Collation با نام Latin1_General_CI_AS تنظیم میشود.
نکته: هنگام Boot شدن Windows Server Core، Interface اولیه Command Prompt است نه PowerShell. برای ورود به PowerShell عبارت powershell را تایپ کنید.
Listing 3-1 — Installing SQL Server from PowerShell
.\SETUP.EXE /IACCEPTSQLSERVERLICENSETERMS /ACTION="Install"
/FEATURES=SQLEngine,Replication,Conn
/INSTANCENAME="PROSQLADMINCORE2"
/SQLSYSADMINACCOUNTS="Administrator"
/SQLCOLLATION="Latin1_General_CI_AS" /qs
نکته: اگر بهجای PowerShell از Command Prompt استفاده میکنید، کاراکترهای ابتدایی .\ لازم نیست.
جدول 3-5 — Ruleهای Syntax برای Command-Line Parameter| نوع Parameter | Syntax |
|---|
| Simple switch | /SWITCH |
| True/False | /PARAMETER=true/false |
| Boolean | /PARAMETER=0/1 |
| Text | /PARAMETER="Value" |
| Multivalued text | /PARAMETER="Value1" "Value2" |
| /FEATURES | /FEATURES=Feature1,Feature2 |
PAGE-099در مثال منبع، SQL Server Instance با نام PROSQLADMINCORE نصب خواهد شد. Database Engine و SQL Agent Service هر دو زیر Account با نام SQLServiceAccount1 اجرا میشوند و Windows Group با نام SQLDBA به Administrator تبدیل میشود. هنگام شروع Installation نسخه سادهشده و Noninteractive مربوط به Installation Wizard نمایش داده میشود تا Progress را نشان دهد.
Smoke Testها
پس از نصب Instance روی Windows Server Core که در انتهای Installation Summary Screen ندارد، بهتر است Smoke Test انجام شود. در اینجا Smoke Test یعنی Test سریع و سطحبالا برای اطمینان از Running بودن Serviceها و Accessible بودن Instance.
Listing 3-2 با PowerShell cmdlet به نام Get-Service وجود و Status سرویسهای مربوط به PROSQLADMINCORE Instance را بررسی میکند. Asterisk بهعنوان Wildcard همه Serviceهایی را برمیگرداند که Instance Name را دارند؛ بنابراین Serviceهایی مانند SQL Browser برگردانده نمیشوند.
Listing 3-2 — Checking Status of Services
Get-Service -displayname *PROSQLADMINCORE2* | Select-Object name,
displayname, status
نتایج شکل 3-1 نشان میدهد SQL Server و SQL Agent Service هر دو نصب شدهاند؛ SQL Server Service Started و SQL Agent Service Stopped است. این با انتظار منطبق است چون Startup Mode Parameter برای هیچکدام استفاده نشده؛ Default Startup Mode مربوط به SQL Server Automatic و SQL Agent Manual است.
PAGE-100Figure 3-1 — شکل/تصویر منبع، صفحه PDF 100Smoke Test دوم استفاده از Invoke-Sqlcmd برای اجرای T-SQL Statementی است که Instance Name را برمیگرداند. برای Invoke-Sqlcmd یا سایر SQL Server PowerShell cmdletها باید PowerShell Module با نام sqlserver نصب باشد. این Module جایگزین SQLPS منسوخ شده و cmdletهای بیشتری دارد.
در Windows Server با Desktop Experience، sqlserver Module همراه نصب SSMS موجود است. در Server Core یا زمانی که SSMS نصب نمیشود، Module از PowerShell Gallery قابل دریافت است. اگر Server به Internet دسترسی دارد، Listing 3-3 ابتدا آخرین Version Module را پیدا کرده و سپس Download و Install میکند. نشانی بیرونی منبع به متن غیرقابل کلیک تبدیل شده است.
PAGE-101Listing 3-3 — Install the sqlserver Module
#Locate and list the current version of the sqlserver module
Find-Module sqlserver
#Download and install the sqlserver module
Install-Module sqlserver
نکته: نخستین بار که Find-Module را اجرا کنید، برای نصب NuGet Provider Prompt دریافت میکنید.
پس از نصب sqlserver Module، Script در Listing 3-4 نام Instance را برمیگرداند.
نکته: این همان Query است که Cluster در IsAlive Test استفاده میکند؛ Impact سیستمی کمی دارد و فقط Accessible بودن Instance را بررسی میکند.
Listing 3-4 — Checking If Instance Is Accessible
Invoke-Sqlcmd –serverinstance "localhost\PROSQLADMINCORE2" -query
"SELECT @@SERVERNAME"
در این مثال -serverinstance برای Instance Name اتصال و -query برای Query اجرایی استفاده شده است. نتیجه Smoke Test در شکل 3-2 نشان میدهد Query با موفقیت Resolve شده و Instance Name را برگردانده است.
PAGE-102Figure 3-2 — شکل/تصویر منبع، صفحه PDF 102Troubleshooting Installation
اگر هنگام Installation Error رخ دهد یا Smoke Test شکست بخورد باید Installation عیبیابی شود. نبود GUI ممکن است دشوار به نظر برسد، اما SQL Server Installation Process مجموعه کامل Verbose Log تولید میکند. مهمترین Logها در جدول 3-6 آمدهاند.
جدول 3-6 — SQL Server Installation Logs| Log File | Location |
|---|
| Summary.txt | %programfiles%\Microsoft SQL Serverh\Setup Bootstrap\Log\ |
| Detail.txt | %programfiles%\Microsoft SQL Serverh\Setup\Bootstrap\Log\<YYYYMMDD_HHMM>\ |
| SystemConfigurationCheck_Report.htm | %programfiles%\Microsoft SQL Serverh\Setup Bootstrap\Log\<YYYYMMDD_HHMM>\ |
PAGE-103Summary.txt
Summary.txt معمولاً نخستین محل بررسی هنگام Troubleshoot کردن Installation Issue است. اطلاعات پایه Installation را ارائه میکند و اغلب برای تشخیص Issue کافی است. نمونه شکل 3-3 در Exit Message روشن میکند Installation به دلیل طولانیبودن Instance Name شکست خورده است.
Figure 3-3 — شکل/تصویر منبع، صفحه PDF 103علاوه بر اطلاعات سطح بالا مانند Exit Code، Exit Message و Start/End Time، summary.txt جزئیات OS Environment را نیز ارائه میکند. همچنین Componentهایی که Setup تلاش کرده نصب کند و Status هر MSI یا Microsoft Installer اجراشده را فهرست میکند و Command-line Parameterهای مشخصشده را نشان میدهد. در انتهای File نیز Exception Summary شامل Stack Trace وجود دارد.
در Windows Server Core میتوان Text File را با Notepad باز کرد. پس از رفتن به Folder مربوط به Setup Log، فرمان notepad summary.txt File را باز میکند.
Detail.txt
اگر summary.txt Detail کافی ندهد، محل بعدی detail.txt است. این یک Verbose Log از Actionهای Installation است.
PAGE-104Actionها بر اساس زمان Execution مرتب شدهاند نه Component اجراکننده. برای پیدا کردن Error باید Stringهای error و exception را Search کنید.
SystemConfigurationCheck_Report.htm
این File Description و Status هر Rule Check انجامشده در Installation را به شکل Web Page ارائه میکند. Windows Server Core توان Render کردن HTML ندارد. یک Option این است که File را در Notepad ببینید؛ Detail وجود دارد اما میان HTML Tagها و بدون Formatting مناسب. Option دوم بازکردن Remote File از Machine دارای GUI است؛ اگر Share روی Server دارید که File را سریع در آن قرار دهید، روش بهتری است. در غیر این صورت ممکن است ارزش صرف زمان نداشته باشد، خصوصاً وقتی Installation همین حالا شکست خورده و Project Team منتظر رفع سریع Issue است.
سایر Log Fileها
Setup Routine تعداد زیادی Log File دیگر میسازد؛ از جمله Folderی به نام Datastore با مجموعه XML Fileهایی که هر کدام Configuration Setting منفرد را نمایش میدهند. Copy مربوط به Configuration File تولیدشده توسط Setup و File به نام settings.xml نیز وجود دارد. settings.xml Metadata مربوط به Configuration Optionها، از جمله Source Value مانند Default Value یا User-specified را تعریف میکند.
برای هر MSI اجراشده در Setup یک Verbose Log نیز ایجاد میشود و تعداد آنها به Featureهای انتخابشده بستگی دارد. در Windows Server Core، تا زمانی که SSAS-only Installation نباشد، حداقل یک .log مربوط به SQL Engine وجود دارد. این Logها Detail بسیار ریزتری درباره MSI خاص خود ارائه میکنند.
PAGE-105استفاده از MSI Logها کاملاً ساده نیست؛ ممکن است Errorهای زیادی ببینید که معلول Error قبلی هستند نه Root Cause. Fileها را بر اساس Creation Time مرتب کنید و از انتها به عقب بررسی نمایید؛ آخرین Error یافتشده Root Cause خواهد بود. برای Search Errorها String مربوط به Return value 3 را جستوجو کنید. بااینحال همه occurrenceهای Return value 3 لزوماً Unexpected Error نیستند و بعضی Resultهای مورد انتظارند.
Optional Parameterها
Switch و Parameterهای اختیاری زیادی برای Customize کردن Configuration Instance وجود دارد. Table 3-7 آنها را برای Database Engine Installation فهرست میکند.
نکته: اگر Account از نوع MSA/gMSA است Password Account را مشخص نکنید. این موضوع شامل Database Engine و SQL Server Agent Service Accountهایی نیز میشود که در غیر این صورت Password آنها الزامی است.
جدول 3-7 — Optional Parameters (بخش 1)| Parameter | کاربرد |
|---|
| /AGTSVCSTARTUPTYPE | Startup Mode مربوط به SQL Agent: Automatic، Manual یا Disabled. |
| /BROWSERSVCSTARTUPTYPE | Startup Mode مربوط به SQL Browser: Automatic، Manual یا Disabled. |
| /CONFIGURATIONFILE | Path مربوط به Configuration File شامل Switch و Parameterها، تا لازم نباشد Inline در Setup مشخص شوند. |
| /ENU | اجبار استفاده از English Version SQL Server هنگام نصب روی Server با Localized Setting و Media دارای Language Pack مربوط به English و OS محلی. |
PAGE-106جدول 3-7 — Optional Parameters (ادامه 2)| Parameter | کاربرد |
|---|
| /FILESTREAMLEVEL | Enable کردن FILESTREAM و Access Level: 0=Disabled، 1=فقط SQL Server، 2=IO Streaming، 3=Remote Streaming. Levelهای 1 تا 3 روی هم Build میشوند. |
| /FILESTREAMSHARENAME | نام Windows File Share محل FILESTREAM Data؛ وقتی FILESTREAMLEVEL برابر 2 یا 3 است الزامی میشود. |
| /FTSVCACCOUNT | Account اجرای Full-Text Filter Launcher Service. |
| /FTSVCPASSWORD | Password Account اجرای Full-Text Filter Launcher Service. |
| /HIDECONSOLE | مخفیکردن Console. |
| /INDICATEPROGRESS | Pipe کردن Setup Log به Screen هنگام Installation. |
| /IACCEPTPYTHONLICENSETERMS | هنگام نصب Anaconda Python Package با /q یا /qs الزامی. |
| /IACCEPTROPENLICENSETERMS | هنگام نصب Microsoft R Package با /q یا /qs الزامی. |
| /INSTANCEDIR | Folder Location مربوط به Instance. |
| /INSTANCEID | Instance ID؛ استفاده از آن طبق فصل 2 Bad Practice است. |
| /INSTALLSHAREDDIR | Folder مربوط به Shared 64-bit Componentها. |
| /INSTALLSHAREDWOWDIR | Folder مربوط به Shared 32-bit Componentها؛ نباید با 64-bit مشترک باشد. |
| /INSTALLSQLDATADIR | Default Folder Location مربوط به Instance Data. |
PAGE-107جدول 3-7 — Optional Parameters (ادامه 3)| Parameter | کاربرد |
|---|
| /NPENABLED | Named Pipes: 0=Disabled، 1=Enabled. |
| /PID | PID مربوط به SQL Server. اگر Media از قبل PID نداشته باشد و این Parameter مشخص نشود Evaluation Edition نصب میشود. |
| /PBENGSVCACCOUNT | Account اجرای PolyBase Service. |
| /PBDMSSVCPASSWORD | Password Account اجرای PolyBase Service. |
| /PBENGSVCSTARTUPTYPE | Startup Mode مربوط به PolyBase: Automatic، Manual یا Disabled. |
| /PBPORTRANGE | Range پورتی که PolyBase Listen میکند؛ حداقل شش Port. |
| /PBSCALEOUT | تعیین عضویت Database Engine در PolyBase Scale-out Group. |
| /SAPWD | Password مربوط به SA Account؛ در Mixed Mode و SECURITYMODE=SQL الزامی. |
| /SECURITYMODE | با Value=SQL برای Mixed Mode؛ بدون این Parameter از Windows Authentication استفاده میشود. |
| /SQLBACKUPDIR | Default Location مربوط به SQL Server Backupها. |
| /SQLCOLLATION | Collation مورد استفاده Instance. |
| /SQLMAXDOP | Maximum Degree of Parallelism مربوط به Queryهای Instance. |
| /SQLMAXMEMORY | Maximum RAM قابل تخصیص به Database Engine. |
PAGE-108جدول 3-7 — Optional Parameters (ادامه 4)| Parameter | کاربرد |
|---|
| /SQLMINMEMORY | Minimum Memory اختصاصیافته به Database Engine؛ هنگام Start بلافاصله این مقدار Consume میشود. |
| /SQLSVCSTARTUPTYPE | Startup Mode مربوط به Database Engine Service: Automatic، Manual یا Disabled. |
| /SQLTEMPDBDIR | Folder Location مربوط به TempDB Data Fileها. |
| /SQLTEMPDBLOGDIR | Folder Location مربوط به TempDB Log Fileها. |
| /SQLTEMPDBFILECOUNT | تعداد TempDB Data File. |
| /SQLTEMPDBFILESIZE | اندازه هر TempDB Data File. |
| /SQLTEMPDBFILEGROWTH | Growth Increment برای TempDB Data File. |
| /SQLTEMPDBLOGFILESIZE | Initial Size مربوط به TempDB Log File. |
| /SQLTEMPDBLOGFILEGROWTH | Growth Increment مربوط به TempDB Log File. |
| /SQLUSERDBDIR | Default Location مربوط به Data Fileهای User Database. |
| /SQLUSERDBLOGDIR | Default Folder Location مربوط به Log Fileهای User Database. |
| /SQMREPORTING | SQL Reporting: 0=Disable، 1=Enable. |
| /SQLSVCINSTANTFILEINIT | اعطای Perform Volume Maintenance Tasks به Database Engine Service Account؛ true/false. |
| /TCPENABLED | TCP: 0=Disable، 1=Enable. |
| /UPDATEENABLED | Product Update: 0=Disable، 1=Enable. |
| /UPDATESOURCE | Location جستوجوی Product Update؛ MU برای Windows Update یا File Share/UNC. |
PAGE-109Product Update
Product Update جایگزین Slipstream Installation منسوخشده SQL Server شده و اجازه میدهد جدیدترین CU یا Cumulative Update یا GDR یا General Distribution Release — Hotfix مربوط به Security Issue — همزمان با Base Binaryهای SQL Server نصب شود. این قابلیت زمان و تلاش DBA برای نصب Update بلافاصله پس از Instance Installation را کم میکند و به Consistent Patching Level در Buildهای جدید کمک میکند.
نکته: از SQL Server 2017 به بعد Service Pack منتشر نمیشود و همه Updateها CU یا GDR هستند.
برای استفاده از این قابلیت دو Parameter لازم است: /UPDATEENABLED با Value برابر 1 یا True و /UPDATESOURCE برای تعیین محل Product Update. Value مربوط به MU باعث بررسی Microsoft Update یا WSUS میشود؛ یا میتوان Relative Path مربوط به Folder یا UNC مربوط به Network Share را داد.
مثال بعدی SQL Server 2019 را همراه CU1 موجود روی Network Share نصب میکند. GDR یا CU هنگام Download در Self-extracting Executable قرار دارند. حتی اگر WSUS استفاده نمیکنید، پس از Sign-off کردن Patching Level جدید کافی است CU داخل Network Share را جایگزین کنید تا Buildهای جدید Update جدید را دریافت کنند بدون اینکه PowerShell Script ساخت Instance تغییر کند.
Listing 3-5 Instance با نام PROSQLADMINCU1 را نصب میکند و همزمان CU1 روی File Server را نصب میکند.
نکته: Account اجرای Installation باید Permission دسترسی به File Share را داشته باشد.
PAGE-110Listing 3-5 — Installing CU During Setup
.\SETUP.EXE / IACCEPTSQLSERVERLICENSETERMS /ACTION="Install"
/FEATURES=SQLEngine,Replication,Conn
/INSTANCENAME="PROSQLADMINCU1"
/SQLSVCACCOUNT="MyDomain\SQLServiceAccount1" /SQLSVCPASSWORD="Pa$$w0rd"
/AGTSVCACCOUNT="MyDomain\SQLServiceAccount1" /AGTSVCPASSWORD="Pa$$w0rd"
/SQLSYSADMINACCOUNTS="MyDomain\SQLDBA" /UPDATEENABLED=1
/UPDATESOURCE="\192.168.183.1\SQL2019_CU1" /qs
Listing 3-6 تفاوت دو Instance را بررسی میکند. Invoke-Sqlcmd به PROSQLADMINCORE2 وصل میشود و System Variable شامل Full Version Detail و Build Number را همراه Instance Name برمیگرداند.
Listing 3-6 — Determining Build Version of Each Instance
$parameters = @{
ServerInstance = 'localhost\PROSQLADMINCORE2'
Query = "
SELECT
@@SERVERNAME
, @@VERSION
"
}
Invoke-sqlcmd @parameters
در این مثال از تکنیک PowerShell با نام Splatting استفاده شده است. Splatting اجازه میدهد Parameterها از قبل تعریف شوند و Code خواناتر شود. چون میتوان چند Splatting Group در Invoke-Sqlcmd داشت، Query را میتوان در Group جدا از سایر Parameterها قرار داد تا همان Parameter Set در Invocationهای مختلف Reuse شود. نتیجه در شکل 3-4 که در مقاله بعد آمده نمایش داده شده است.