نصب و پیکربندی SQL Server روی Linux | Pro SQL Server 2019 Administration

نصب و پیکربندی SQL Server روی Linux

توسط admin | گروه SQL Server | 1405/05/20

نظرات 0

نصب و پیکربندی SQL Server روی Linux

Chapter 4 — Installation on Heterogeneous Operating Systems (Linux)

نویسنده: Peter A. Carter

زبان منبع: انگلیسی

محدوده: صفحات PDF 121 تا 130

تاریخ ترجمه: 2026-08-11

اعتبار ترجمه: ترجمه با کمک هوش مصنوعی

PAGE-121

© Peter A. Carter 2019 — P. A. Carter, Pro SQL Server 2019 Administration — doi.org/10.1007/978-1-4842-5089-1_4

فصل 4 — نصب روی سیستم‌عامل‌های ناهمگون

دو نسخه اصلی اخیر SQL Server تمرکز زیادی بر فراهم‌کردن امکان نصب SQL Server در انواع محیط‌های غیرسنتی داشته‌اند. در این فصل بررسی می‌کنیم چگونه SQL Server را روی Linux نصب کنیم و چگونه Imageها و Containerهای Docker را که شامل SQL Server هستند بسازیم و اجرا کنیم.

نکته: فرمان‌هایی که برای نصب و پیکربندی SQL Server روی Linux استفاده می‌شوند بین Distributionهای مختلف اندکی تفاوت دارند. این فصل روی Ubuntu تمرکز دارد، زیرا برای DBAهایی که سابقه کار با Windows دارند احتمالاً ساده‌تر و آشناتر است و هدف فصل نیز آشناکردن شما با مفاهیم و فرایند است. Microsoft برای هر Distribution راهنمای Quick Start جداگانه ارائه می‌کند.

نصب SQL Server روی Linux

جدول 4-1 Distributionها و Versionهای Linux را که SQL Server روی آن‌ها پشتیبانی می‌شود نشان می‌دهد. Version اهمیت دارد؛ برای مثال در زمان نگارش، نسخه جاری Ubuntu برابر 19.4.1 است، در حالی که SQL Server روی نسخه 16.4 پشتیبانی می‌شود. در آزمون‌های شخصی نویسنده، SQL Server روی Ubuntu 19.4.1 با موفقیت نصب شد، اما Serviceهای Pacemaker و PCS در آن زمان روی این Version قابل نصب نبودند؛ بنابراین پیکربندی AlwaysOn Availability Groups برای HA/DR روی آن نسخه Ubuntu امکان‌پذیر نبود.

PAGE-122

در بخش‌های بعدی ابتدا نصب دستی SQL Server روی Linux و سپس ایجاد نصب Unattended را بررسی می‌کنیم.

نصب دستی SQL Server

برخلاف نصب SQL Server روی Windows که پیش از Installation مشخص می‌کنید Instance چگونه پیکربندی شود، در Linux روند برعکس است. ابتدا نسخه پایه SQL Server را نصب می‌کنید و سپس بعد از Deployment، Instance را پیکربندی می‌کنید. در این بخش فرایند نصب دستی SQL Server روی Linux را مرور می‌کنیم. برای این مثال از Ubuntu 16.4 استفاده می‌شود.

اولین گام Import کردن Public GPG Keyهاست تا به Repository مربوط به SQL Server دسترسی پیدا کنیم. این کار با فرمان Bash در Listing 4-1 انجام می‌شود.

Listing 4-1 — Import کردن Public GPG Key

wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

اگر این فرمان را تجزیه کنیم، از wget برای دریافت Keyها از وب‌سایت Microsoft استفاده می‌شود. wget فرمانی برای دریافت محتوای Web است. سپس Operator برابر |، Key را به فرمان apt-key می‌فرستد که ابزاری برای مدیریت Keyهاست. فرمان add، Key را به فهرست Trusted Keyها اضافه می‌کند. وقتی Package مربوط به SQL Server با Trusted Key احراز اصالت شود، Package نیز Trusted خواهد شد. استفاده از sudo مشابه مفهوم Run As Administrator در Windows است و Permissionهای User را تا سطح root بالا می‌برد؛ root معادل Administrator ویندوز است.

جدول 4-1 — Distributionها و Versionهای پشتیبانی‌شده Linux
DistributionVersion پشتیبانی‌شده
Red Hat Enterprise7.3–7.6
SUSE Enterprise ServerV12 SP2
Ubuntu16.4
PAGE-123

گام بعدی Register کردن Repository مربوط به SQL Server است. این کار با فرمان Bash در Listing 4-2 انجام می‌شود. فرمان از Script به نام add-apt-repository برای افزودن Repository خارجی استفاده می‌کند و فرمان wget درون آن، Package را از وب‌سایت Microsoft دریافت می‌کند.

Listing 4-2 — Register کردن SQL Server Repository

sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/
ubuntu/16.04/mssql-server-2019.list)"

سپس از apt-get که Package Manager در Linux است استفاده می‌کنیم تا فهرست Packageها را از Repositoryها دریافت و با جدیدترین Versionها به‌روزرسانی کند. Listing 4-3 این کار را نشان می‌دهد.

Listing 4-3 — به‌روزرسانی فهرست Packageهای Repository

sudo apt-get update

در Listing 4-4 دوباره از apt-get استفاده می‌کنیم، این بار همراه فرمان install، تا Package مربوط به SQL Server نصب شود. Switch برابر -y برای پذیرش خودکار Promptهای User به کار می‌رود.

Listing 4-4 — نصب Package مربوط به SQL Server

sudo apt-get install -y mssql-server

پس از کامل‌شدن نصب Package، خروجی از شما می‌خواهد فرمان sudo /opt/mssql/bin/mssql-conf setup را اجرا کنید. این ابزار Configuration مربوط به SQL Server است و امکان پیکربندی Instance را می‌دهد. با اجرای mssql-conf setup از شما خواسته می‌شود Edition موردنظر SQL Server را انتخاب کنید؛ همان‌طور که در Figure 4-1 نشان داده شده است. برای انتخاب از عددهای 1 تا 8 استفاده می‌شود.

PAGE-124

در مرحله بعد باید SQL Server License Terms را بپذیرید؛ مطابق Figure 4-2. برای پذیرش، Yes تایپ می‌شود.

Figure 4-1 — انتخاب Edition.

Figure 4-2 — پذیرش License Terms.

سپس مطابق Figure 4-3 باید Language را با استفاده از اعداد 1 تا 11 انتخاب کنید.

Figure 4-3 — انتخاب Language.

Figure 4-2 — شکل/تصویر منبع، صفحه PDF 124
Figure 4-1 — شکل/تصویر منبع، صفحه PDF 124
Figure 4-3 — شکل/تصویر منبع، صفحه PDF 124
PAGE-125
نکته: Languageهایی که در Figure 4-3 به‌درستی Render نشده‌اند، زبان‌های Multicharacter مانند Chinese هستند.

اکنون از شما خواسته می‌شود Password حساب sa را وارد و تأیید کنید؛ همان‌طور که Figure 4-4 نشان می‌دهد.

Figure 4-4 — افزودن Password برای sa.

در این مرحله Instance پیکربندی شده و می‌توانید به آن متصل شوید؛ یا با sqlcmd که به‌عنوان بخشی از Package مربوط به SQL Server Tools روی Linux Server نصب می‌شود و در بخش «Unattended Installation» همین فصل توضیح داده خواهد شد، یا به‌صورت Remote با SSMS یا SQL Server Management Studio.

پیکربندی SQL Server

اگرچه SQL Server اکنون نصب شده و Basic Configuration انجام شده است، برای اینکه Instance کاملاً متناسب با نیازهای شما قابل استفاده باشد ممکن است لازم باشد Configurationهای دیگری هم در سطح Operating System و هم در سطح Instance انجام شود. در این بخش برخی نیازمندی‌های رایج Configuration در محیط Linux بررسی می‌شوند.

ابزار اصلی Configuration برای SQL Server Instance، همان mssql-conf است که هنگام Installation برای انتخاب Edition و Language و تعیین Password حساب sa استفاده شد. این ابزار Parameterهای متعدد دیگری نیز دارد که در جدول 4-2 آمده‌اند.

Figure 4-4 — بازنمایی از صفحه اصلی PDF 125
PAGE-126
جدول 4-2 — Parameterهای mssql-conf
Parameterشرح
AgentSQL Server Agent را Enable یا Disable می‌کند.
CollationCollation مربوط به Instance را تعیین می‌کند.
Customer feedbackمشخص می‌کند Customer Feedback به Microsoft ارسال شود یا خیر. به‌صورت پیش‌فرض فعال است و در Editionهای رایگان نمی‌توان آن را غیرفعال کرد.
Database Mail profileDatabase Mail Profile مورد استفاده برای E-mail Alertها را تعیین می‌کند.
Default data directoryDirectory پیش‌فرض Fileهای User Database را تعیین می‌کند.
Default log directoryDirectory پیش‌فرض Transaction Log Fileهای User Database را تعیین می‌کند.
Default Master database directoryDirectory مربوط به Data و Log Fileهای Master Database را تعیین می‌کند.
Default Master database file nameنام Database Fileهای Master Database را تغییر می‌دهد.
Default dump directoryDirectory مورد استفاده برای Memory Dump Fileها را تعیین می‌کند.
Default error log directoryDirectory مربوط به SQL Server Error Log جدید، Default Profiler Trace، System Health Session XE و Hekaton Session XE را تعیین می‌کند.
Default backup directoryDirectory مورد استفاده برای Backupهای جدید را تعیین می‌کند.
Dump typeنوع Memory Dump قابل Capture را مشخص می‌کند. علاوه بر Mini Dump امکان Full Dump نیز وجود دارد و می‌توان نوع Dump را از میان mini، miniplus، filtered و full انتخاب کرد.
High availabilityAlwaysOn Availability Groups را Enable یا Disable می‌کند.
Local Audit directoryDirectory مورد استفاده برای Local Audit Fileها را تعیین می‌کند.
LocaleLocale مربوط به SQL Server Instance را تعیین می‌کند.
Memory limitمقدار Physical Memory در دسترس SQL Server Instance را تعیین می‌کند.
TCP portPortی را که SQL Server برای Connectionها روی آن Listen می‌کند تعیین می‌کند.
TLSبرای پیکربندی جنبه‌های مختلف Network در SQL Server Instance به کار می‌رود، از جمله forceencryption، tlscert، tlskey، tlsprotocols، tlsciphers و kerberoskeytabfile.
TraceflagsGlobal Trace Flagها را روی Instance تعیین می‌کند.
PAGE-127

احتمالاً رایج‌ترین نیاز Configuration، Start کردن SQL Server Agent است. این کار با Parameter برابر Agent و مطابق Listing 4-5 انجام می‌شود.

Listing 4-5 — Start کردن Server Agent

sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true

نمونه خوب دیگر از کاربرد این Tool، Parameter مربوط به TCP Port است. درست مانند محیط Windows، TCP 1433 به‌صورت پیش‌فرض Port مربوط به SQL Server است. بااین‌حال دلایلی برای تغییر آن وجود دارد؛ مثلاً در محیط‌های High Security، برای اجتناب از Well-known Port Number که می‌تواند هدف Attack قرار گیرد.

فرمان Listing 4-6، SQL Server Instance را طوری پیکربندی می‌کند که روی Port 50001 Listen کند. نویسنده معمولاً از Range برابر 50001-500xx استفاده می‌کند، چون Reserved نیست.

Listing 4-6 — پیکربندی Port

sudo /opt/mssql/bin/mssql-conf set network.tcpport 50001

برای اعمال Setting باید ابتدا SQL Server Service را Restart کنیم. این کار با systemctl انجام می‌شود که Tool مدیریت Serviceها در Linux است. Listing 4-7 SQL Server Service را Restart می‌کند.

Listing 4-7 — Restart کردن SQL Server Service

sudo systemctl restart mssql-server

ابزار systemctl همچنین برای بررسی Running بودن Service قابل استفاده است؛ مطابق Listing 4-8.

Listing 4-8 — بررسی Running بودن Service

sudo systemctl status mssql-server

حالا که SQL Server برای Listen کردن روی Port 50001 تنظیم شده است، Local Firewall نیز باید طوری پیکربندی شود که Traffic این Port را عبور دهد. Local Firewall با Toolی به نام ufw یا Uncomplicated Firewall مدیریت می‌شود. Script موجود در Listing 4-9 نشان می‌دهد چگونه ufw نصب شود، Default Ruleها تنظیم شوند، Traffic روی Port 50001 مجاز شود و سپس برای اعمال Ruleها Reload انجام شود. در پایان Script، Ruleهای پیکربندی‌شده نمایش داده می‌شوند.

PAGE-128

Listing 4-9 — کار با ufw

#Install ufw
sudo apt-get install ufw
#Start ufw
sudo systemctl start ufw
#Enable ufw
sudo systemctl enable ufw
#Set default Firewall Rules
sudo ufw default allow outgoing
sudo ufw default deny incoming
#Add A Rule For SQL
sudo ufw allow 50001/tcp
#Restart ufw
sudo ufw reload
#Show ufw Status
sudo ufw status
نکته: در SQL Server 2019، TempDB به‌طور خودکار با یک Data File به ازای هر Core تا حداکثر هشت File پیکربندی می‌شود. در Versionهای قبل، Setup فقط یک Data File ایجاد می‌کرد.

نصب Unattended

چون Bash یک Scripting Language است، Installation مربوط به SQL Server را می‌توان Script کرد؛ مشابه استفاده از PowerShell برای Script کردن Installation در Windows. برای این کار ابتدا یک Text File با Editor به نام vi می‌سازیم. فرمان Listing 4-10 Fileی به نام sqlconfig.sh را ایجاد و باز می‌کند. پسوند .sh معمولاً برای Bash Scriptها به کار می‌رود.

PAGE-129

Listing 4-10 — ایجاد Bash Script با Vi

vi sqlconfig.sh

بحث کامل درباره فرمان‌های vi خارج از دامنه این کتاب است. برای Insert کردن Text از فرمان i استفاده کنید. پس از اتمام، برای بازگشت به Command Mode کلید ESC را بزنید. فرمان :q! بدون Save کردن از vi خارج می‌شود و :wq File را Save کرده و خارج می‌شود.

Script موجود در Listing 4-11 را می‌توان در Bash Script قرار داد. نخستین Line مشخص می‌کند File قابل اجراست. همچنین در این نمونه Full-text Indexing برای Instance نصب می‌شود و هم یک Trace Flag و هم Maximum Memory Limit برای SQL Server پیکربندی می‌شوند.

شاید مهم‌ترین نکته این باشد که Package دیگری با نام mssql-tools نیز نصب می‌شود. این Package شامل Command-line Toolهای SQL Server روی Linux از جمله sqlcmd است. در پایان Script از این Tool برای ایجاد User جدید و افزودن آن به Fixed Server Role برابر sysadmin استفاده می‌شود.

نکته: Microsoft در حال کار روی Command-line Interface جدید و Multiplatform برای SQL Server با نام mssql-cli است. این Tool روی Linux، Windows و Mac قابل استفاده است. در زمان نگارش در حالت Preview قرار داشت.

Listing 4-11 — Scripted SQL Server Installation

#! /bin/bash
MSSQL_SA_PASSWORD='Pa££w0rd'
MSSQL_PID='developer'
SQL_USER='SQLAdmin'
SQL_USER_PASSWORD='Pa££w0rd'
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/
ubuntu/16.04/mssql-server-2019.list)"
PAGE-130
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/
ubuntu/16.04/prod.list)"
sudo apt-get update -y
sudo apt-get install -y mssql-server
sudo ACCEPT_EULA=Y apt-get install -y mssql-tools unixodbc-dev
sudo MSSQL_SA_PASSWORD=$MSSQL_SA_PASSWORD      MSSQL_PID=$MSSQL_PID      /opt/mssql/bin/mssql-conf -n setup accept-eula
sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
sudo /opt/mssql/bin/mssql-conf set memory.memorylimitmb 2048
sudo /opt/mssql/bin/mssql-conf traceflag 3226 on
sudo apt-get install -y mssql-server-fts
sudo systemctl restart mssql-server
/opt/mssql-tools/bin/sqlcmd   -S localhost   -U SA   -P $MSSQL_SA_PASSWORD   -Q "CREATE LOGIN [$SQL_USER] WITH PASSWORD=N'$SQL_INSTALL_PASSWORD'; 
ALTER SERVER ROLE [sysadmin] ADD MEMBER [$SQL_USER]"

فرمان Listing 4-12 Permission مربوط به Execute را روی Script می‌دهد.

Listing 4-12 — اعطای Execute Permission

chmod +x sqlconfig.sh

Script با فرمان Listing 4-13 اجرا می‌شود.

Listing 4-13 — اجرای Installation

sh sqlconfig.sh

امتیاز کاربران به این مقاله

☆☆☆☆☆

0 نفر امتیاز داده اند. میانگین: 0.0 از 5

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

0 / 500