PAGE-080Collationها میتوانند چالشبرانگیز باشند و در حالت ایدهآل باید در سراسر Enterprise، Collationهای Consistent حفظ شوند. در سازمانهای Global امروزی این کار همیشه ممکن نیست، اما باید هدف شما باشد. هنگام Installation نیز انتخاب Collation صحیح برای Instance اهمیت زیادی دارد. تغییر Collation پس از Installation دشوار است، زیرا Databaseها و Columnهای Tableها Collation مستقل دارند و اگر Object دیگری به Collation وابسته باشد تغییر آن ممکن نیست.
در بدترین سناریوی سطح بالا، تغییر Collation در آینده میتواند شامل مراحل زیر باشد:
- همه Databaseها را دوباره ایجاد کنید.
- همه Data را به Copyهای جدید Database Export کنید.
- Databaseهای اصلی را Drop کنید.
- Master Database را با Collation مطلوب Rebuild کنید.
- Databaseها را دوباره ایجاد کنید.
- Data را از Copyها دوباره Import کنید.
- Copyهای Database را Drop کنید.
مگر آنکه Backward Compatibility Requirement مشخصی داشته باشید، از SQL Collationها اجتناب کنید و فقط Windows Collation استفاده نمایید. Windows Collationها Best Practice محسوب میشوند، زیرا SQL Collationها Deprecated هستند و همگی کاملاً با Windows Collation سازگار نیستند. هنگام انتخاب Collationهای جدیدتر مانند Norwegian یا Bosnian_Latin نیز دقت کنید؛ این Familyها به Code Pageهای Windows Server 2008 یا بالاتر Map میشوند اما به Code Pageهای سیستمعامل قدیمیتر Map نمیشوند. در نتیجه Query از سیستمعاملی قدیمی مانند Windows XP میتواند به Code Page Mismatch و Exception منجر شود.
نکته: برای Exampleهای این کتاب از Latin1_General_CI_AS استفاده کنید.
Provisioning Instance Security
صفحه بعد Setup Wizard برای پیکربندی Database Engine است و شش Tab دارد. Tab اول Authentication Mode و Instance Administratorها را تنظیم میکند. Tab دوم Default Data Directory و Locationهای مشخص User Database و TempDB را تعیین میکند. Tab سوم TempDB Configuration، Tab چهارم Max Degree of Parallelism، Tab پنجم Memory Setting و Tab آخر FILESTREAM را پیکربندی میکند.
PAGE-081Figure 2-23 — شکل/تصویر منبع، صفحه PDF 81در Windows Authentication Mode، Credentialهایی که User هنگام Login به Windows ارائه میکند به SQL Server منتقل میشوند و برای دسترسی به Instance Credential دیگری لازم نیست. در Mixed Mode، Windows Credential همچنان قابل استفاده است اما User میتواند Second-tier Credential نیز داشته باشد. در این حالت SQL Server Username و Password مستقل را داخل Instance نگه میدارد و User حتی اگر Windows Identity او Permission نداشته باشد میتواند با این Credentialها دسترسی بگیرد.
PAGE-082از منظر Security Best Practice بهتر است فقط Windows Authentication به Instance اجازه داده شود. دو دلیل وجود دارد. نخست، حتی اگر مهاجم به Network دسترسی پیدا کند، بدون Windows Account معتبر با Permission درست همچنان نمیتواند به SQL Server وارد شود. اما در Mixed-mode Authentication، مهاجم پس از ورود به Network میتواند Brute Force یا روشهای دیگر Hacking را علیه Second-tier User Account امتحان کند.
دوم، در Mixed Mode باید SA Account ایجاد شود. SA یک SQL Server User Account با Administrative Privilege روی Instance است. اگر Password آن Compromise شود، مهاجم میتواند Administrative Control SQL Server را به دست آورد.
بااینحال Mixed-mode در برخی موارد ضروری است؛ مثلاً Legacy Application که Windows Authentication را پشتیبانی نمیکند، Third-party Application با Connection Hard-coded مبتنی بر Second-tier Authentication، یا Userهایی که باید از Nontrusted Domain به Instance دسترسی داشته باشند.
هشدار: برای کاهش Security Footprint SQL Server، Mixed-mode Authentication را فقط بهصورت Exception استفاده کنید.
پیکربندی Instance
در Server Configuration Tab باید حداقل یک Instance Administrator تعیین کنید. Add Current User برای افزودن Windows Security Context فعلی و Add برای جستوجوی Windows Security Principal مانند User یا Group استفاده میشود. در حالت ایدهآل یک Windows Group شامل همه DBAهای نیازمند Administrative Access انتخاب کنید تا Security Management سادهتر شود.
Data Directories Tab در شکل 2-24 نشان داده شده است.
Figure 2-24 — بازنمایی از صفحه اصلی PDF 82
PAGE-083Figure 2-25 — شکل/تصویر منبع، صفحه PDF 83Data Directories Tab اجازه میدهد Default Location مربوط به Data Root Directory تغییر کند. همچنین Default Location User Databaseها و Log Fileهای آنها و Location مربوط به TempDB Data و Log قابل تنظیم است. همانطور که در فصل 1 گفته شد، این موضوع مهم است چون معمولاً User Data Fileها باید از Logها و TempDB جدا باشند. Default Location مربوط به Database Backup نیز در همین Tab مشخص میشود.
TempDB Tab که در شکل 2-25 دیده میشود، File Optionهای TempDB را پیکربندی میکند. تعداد TempDB Fileها مهم است، زیرا تعداد کم میتواند روی System Pageهایی مانند GAM یا Global Allocation Map و SGAM یا Shared Global Allocation Map Contention ایجاد کند. تعداد بهینه Fileها با فرمول زیر محاسبه میشود:
SMALLEST(Number of logical cores, 8)
اگر Hyper-threading فعال باشد، Logical Coreها برابر Physical Core × 2 هستند. در VMWare تعداد Logical Core برابر تعداد Virtual Core است.
PAGE-084Figure 2-25 — شکل/تصویر منبع، صفحه PDF 84برای Initial Size فایلها، نویسنده معمولاً برای Busy OLTP System از Rule زیر استفاده میکند، هرچند مقدار واقعی بر اساس Requirement و Workload Profile User Databaseها متفاوت است:
SUM(Data file size for all user databases) / 3
MaxDOP Tab در Wizard حداکثر تعداد CPU Coreهایی را که یک Query واحد میتواند استفاده کند تنظیم میکند. Setup Program یک Recommended Value پیشفرض محاسبه میکند، ولی در صورت نیاز میتوان آن را Override کرد. پیکربندی MaxDOP در فصل 5 با جزئیات بیشتر بررسی میشود.
Figure 2-26 — بازنمایی از صفحه اصلی PDF 84
PAGE-085Figure 2-27 — شکل/تصویر منبع، صفحه PDF 85شکل 2-27 Memory Tab را نشان میدهد. در این Tab میتوانید Default Configuration مربوط به Minimum و Maximum Memory قابل تخصیص به Instance را انتخاب کنید، Recommended Valueهای محاسبهشده توسط Setup Wizard را بپذیرید یا Valueهای خودتان را وارد کنید. برای مشخصکردن Value سفارشی، Recommended Option را انتخاب کرده و Valueها را وارد کنید و Checkbox مربوط به Accept کردن Recommended Memory Configuration برای SQL Server Database Engine را علامت بزنید. اگر میخواهید Recommendation خود Setup Program را نیز بپذیرید همین Checkbox باید فعال شود. Minimum و Maximum Memory در فصل 5 بهطور کامل بررسی میشود.
PAGE-086Figure 2-28 — شکل/تصویر منبع، صفحه PDF 86FILESTREAM Tab در Database Engine Configuration Page امکان Enable و Configure کردن Level دسترسی برای SQL Server FILESTREAM را میدهد. اگر میخواهید FileTable Feature را استفاده کنید، FILESTREAM نیز باید Enable باشد. FILESTREAM و FileTable امکان Store کردن Data بهصورت Unstructured داخل Windows Folder Structure را فراهم میکنند، در حالی که مدیریت و Query کردن همان Data از SQL Server حفظ میشود.
PAGE-087Figure 2-28 — شکل/تصویر منبع، صفحه PDF 87انتخاب Enable FILESTREAM For Transact-SQL Access، FILESTREAM را Enable میکند اما Data فقط از داخل SQL Server قابل دسترسی است. انتخاب Enable FILESTREAM For File I/O Access به Applicationها اجازه میدهد مستقیماً از Operating System و بدون عبور از SQL Server به Data دسترسی پیدا کنند. در این حالت باید نام یک File Share موجود را برای Direct Application Access وارد کنید.
Option مربوط به Allow Remote Clients Access To FILESTREAM Data، Data را برای Remote Application قابل دسترس میکند. این سه Option روی یکدیگر Build میشوند؛ مثلاً نمیتوان File I/O Access را فعال کرد مگر اینکه ابتدا Transact-SQL Access فعال شده باشد. FILESTREAM و FileTable در فصل 6 بیشتر بررسی میشوند.
PAGE-088پیکربندی Distributed Replay
صفحه بعد Wizard از شما میخواهد Userهایی را که به Distributed Replay Controller Service دسترسی خواهند داشت مشخص کنید. مشابه اعطای Administrative Permission به Instance، Add Current User برای Security Context فعلی و Add برای جستوجوی Windows User و Group استفاده میشود.
Figure 2-29 — شکل/تصویر منبع، صفحه PDF 88در صفحه بعد Distributed Replay Client پیکربندی میشود. Working Directory فولدری روی Client است که Dispatch Fileها در آن ذخیره میشوند و Results Directory محل ذخیره Trace File روی Client است. Fileهای هر دو Location با هر اجرای Trace Overwrite میشوند. اگر Distributed Replay Controller موجودی دارید نام آن را در Controller Name وارد کنید.
PAGE-089Figure 2-30 — شکل/تصویر منبع، صفحه PDF 89اگر Controller جدید را پیکربندی میکنید، Controller Name باید خالی بماند و بعداً در Configuration File با نام DReplayClient.config اصلاح شود. Configuration و استفاده از Distributed Replay در فصل 21 بررسی خواهد شد.
تکمیل Installation
Ready to Install Page آخرین صفحه Wizard پیش از شروع Installation است. این صفحه Summary Featureهای قابل نصب را نمایش میدهد. یکی از بخشهای مهم آن Configuration File Path است که Path مربوط به Configuration File قابل استفاده مجدد برای Installation Instanceهای دیگر با Configuration یکسان را نشان میدهد. Configuration Fileها در فصل 3 بیشتر بررسی میشوند.
Figure 2-31 — بازنمایی از صفحه اصلی PDF 89
PAGE-090Figure 2-32 — شکل/تصویر منبع، صفحه PDF 90Setup Wizard هنگام Installation Progress Bar نشان میدهد. پس از اتمام Installation یک Summary Screen مطابق شکل 2-32 نمایش داده میشود. باید بررسی کنید Status همه Componentهای نصبشده Succeeded باشد. پس از آن Installation SQL Server کامل است.
PAGE-091Figure 2-32 — شکل/تصویر منبع، صفحه PDF 91جمعبندی
SQL Server Installation Center ابزارها و Linkهای مفیدی برای راهنمایی و کمک در Installation Process دارد. با آن میتوان Failover Clustered Instance و Stand-alone Instance نصب کرد. همچنین Toolهایی برای Advanced Installation Requirement مانند Prepared Imageهای SQL Server و Installation مبتنی بر Configuration File وجود دارند.
علاوه بر نصب Database Engine Instance با SQL Server 2019 Setup Wizard، همان Tool برای نصب اجزای BI و ETL Suite مانند Analysis Services، Integration Services، Data Quality Services و Master Data Services نیز استفاده میشود. اگر Analysis Services را با Wizard نصب کنید، میتوان آن را با Multidimensional Model یا Tabular Model پیکربندی کرد.
PAGE-092اگرچه میتوان SQL Server را با Default Valueها با موفقیت نصب کرد، برای Supportability بلندمدت Instance و کل Estate باید جنبههای متعدد Installation را در نظر بگیرید. این موضوع بهویژه درباره Collationها، Service Accountها و سایر Security Considerationها اهمیت دارد؛ از جمله انتخاب مناسبترین Administrator Group برای افزودن و Authentication Model برای پیادهسازی.