В этой статье мы пошагово рассмотрим установку Microsoft SQL Server 2019 с описанием всех опций, компонентов, актуальных рекомендаций и best practice.
MS SQL Server это лидирующая РСУБД (Реляционная система управления базами данных) а также главный конкурент Oracle Database в корпоративном сегменте. В СНГ MSSQL чаще всего применяется для собственных разработок прикладного ПО и для 1С.
Содержание:
- Редакции MS SQL Server 2019
- Особенности лицензирования SQL Server
- Начало установки SQL Server
- Параметры обновлений SQL Server при установке
- Тип инсталляции SQL Server
- Компоненты SQL Server 2019: для чего нужны, какие нужно установить
- Настройка именования экземпляра SQL Server
- Настройка параметров служб SQL Server, кодировка
- Настройка Database Engine в SQL Server
Редакции MS SQL Server 2019
Всего есть 6 выпусков (редакций) MSSQL 2019:
- Express является бесплатной для использования редакцией. Функционал довольно ограничен, самое ощутимое ограничение экспресс версии — максимальный размер базы 10 ГБ. Эта редакция подойдет для небольших проектов, например, студенческих работ или для обучения SQL/T-SQL.
- Standard это полноценная платная редакция, но многих функций всё еще нет. Максимальный объём оперативной памяти, который сможет использовать SQL Server – 128 ГБ, также отсутствуют группы доступности AlwaysOn и другие компоненты. Standard предназначен для приложений в небольших организациях.
- Enterprise включает в себя все возможные функции и компоненты, никаких ограничений нет. Корпоративная редакция обычно используется крупными корпорациями или компаниями, которым необходим функционал этой версии.
- Developer редакция так же как и Enterprise не имеет никаких ограничений и её можно использовать бесплатно, но она может использоваться только для разработки и тестирования приложений.
- Web редакция почти ничем не отличается от standard, кроме как более сильными ограничениями в функционале и соответственно более низкой стоимости лицензирования;
- Evaluation — ознакомительная редакция SQL Server, которая предоставляет полный функционал Enterprise и работает в течении 180 дней (может быть обновлена до полноценной версии).
Особенности лицензирования SQL Server
MS SQL Server лицензируется по 2 моделям:
- PER CORE — лицензирует MSSQL по ядрам сервера
- SERVER + CAL — лицензия целиком на сервер и на каждого пользователя, который будет работать с сервером
Enterprise редакция может быть лицензирована только по типу PER CORE
Также в MSSQL Server 2019 появилась новая возможность для лицензирования контейнеров, виртуальных машин и Big Data Clusters.
Более подробная информация по лицензирования SQL Server представлена в отдельной статье.
Начало установки SQL Server
В этой статье мы будем устанавливать MS SQL Server 2019 Enterprise Edition на Windows Server 2019.
Примечание. В SQL Server 2019 появилась полноценная поддержка Linux, а соответственно Docker и Kubernetes.
- Скачайте и распакуйте установочный образ SQL Server 2019. Запустите setup.exe;
- Так как в этой статье мы будем устанавливать обычный изолированный экземпляр, во вкладке Installation выберите “New SQL Server stand-alone installation”.
В инсталляторе SQL Server можно выполнить много других действий: обновить старый экземпляр, починить сломанный и некоторые другие вещи.
Параметры обновлений SQL Server при установке
На этом шаге вы можете включить поиск обновлений через Windows Update. Включать эту опцию или нет, решать вам. Всё зависит от вашей планировки обновлений и от требований к отказоустойчивости сервера. Если у вас нет четкого плана обновлений ваших серверов, лучше оставьте этот параметр включенным.
Нажмите Next.
Шаг Install Setup Files произойдет автоматически. Он подготовит файлы для установки.
Install Rules так же пройдет автоматически, если установщик не обнаружит проблем, которые необходимо решить перед установкой MSSQL (например, перезагрузить компьютер или несовместимость вашей версии Windows с версией SQL Server).
Тип инсталляции SQL Server
На этом шаге вы можете выбрать установку нового экземпляра или добавление функционала в уже установленный экземпляр. В нашем случае выбираем “Perform a new installation”.
Теперь нужно ввести ключ продукта. Если нет ключа, выбирайте Free edition (например, Developer), но имейте в виду, что с редакцией Developer вы имеете право только разрабатывать и тестировать ПО, но не использовать сервер в продуктивной среде.
На шаге License Terms принимаем лицензионное соглашение.
Компоненты SQL Server 2019: для чего нужны, какие нужно установить
На этом этапе вам предлагают установить различные компоненты SQL Server. Пройдемся по ним подробнее, посмотрим какие нужно ставить в различных ситуациях:
- Database Engine Services – это основной движок SQL Server. Обязателен к установке.
- SQL Server Replication – службы репликации. Компонент довольно часто используются, поэтому если вы не уверены нужны ли они вам, то лучше отмечайте для установки.
- Machine Learning Services and Language Extensions – службы для выполнения R/Python/Java кода в контексте SQL Server. Необходимо, если вы собираетесь заниматься Machine Learning.
- Full-Text and Semantic Extractions for Search – компонент необходим, если вам нужна полнотекстовая технология поиска или семантический поиск в документах (например docx). В случае семантического поиска по документам, вам также понадобиться FILESTREAM, о нём ниже.
- Data Quality Services – службы для коррекции и валидации данных. Если вы не уверены нужен ли вам DQS, то лучше не устанавливайте его.
- PolyBase Query Service For External Data – технология для доступа к внешним данным, например на другом SQL Server или в Oracle Database. Java connector for HDFS data sources относиться к PolyBase технологии и нужен в случае если вы хотите работать с HDFS технологией.
- Analysis Services – также известен как SSAS. Технология для бизнес-отчетов (BI) и работы с OLAP. Используется в крупных компаниях для отчетности.
Дальше переходим к списку Shared Features (функций, распространяющихся на весь сервер, а не на конкретный экземпляр).
- Machine Learning Server (Standalone) – то же самое что и Machine Learning Services and Language Extensions, но с возможностью установки без самого движка SQL Server.
- Data Quality Client – то же самое что и DQS, только standalone.
- Client Tools Connectivity – библиотеки ODBC, OLE DB и некоторые другие. Рекомендем ставить обязательно.
- Integration Services – службы интеграции данных, известны также как SSIS. Технология для ETL (Extract, Transform, Load) данных. SSIS нужны, если вы хотите автоматизировать импорт данных и менять их в процессе импорта. Scale Out Master/Worker нужны для масштабирования работы SSIS. Если вы не уверены нужны ли они вам, то не отмечайте их.
- Client Tools Backwards Compatibility – устаревшие DMV и системные процедуры. Рекомендую ставить.
- Client Tools SDK – пакет с ресурсами для разработчиков. Можно не ставить, если не уверены, нужен ли он вам.
- Distributed Replay Controller/Client – повторяют и улучшают функционал SQL Server Profiler. Службы Distributed Replay нужны для моделирования нагрузки и для различного рода тестирования производительности.
- SQL Client Connectivity SDK – ODBC/OLE DB SDK для разработчиков.
- Master Data Services – компонент из Microsoft Power BI. Нужен для анализа, валидации, интеграции и коррекции данных.
Некоторые из этих компонентов (например, Java connector for HDFS data sources) могут отсутствовать в более старых версиях SQL Server.
Чуть ниже, на этом же шаге, вы можете указать директорию для файлов SQL Server’a. Если у вас нет весомых причин менять её, то оставьте стандартную (C:\Program Files\Microsoft SQL Server\).
После того как вы выбрали нужные вам компоненты MSSQL, инсталлятор проверяет совместимость компонентов с вашей системой, и, если проблем нет, этот шаг пройдет автоматически.
Настройка именования экземпляра SQL Server
Вы можете оставить параметр Default Instance, в таком случае имя вашего экземпляра будет MSSQLSERVER. При выборе Named Instance вы сами указываете имя экземпляра SQL Server. В моём случае я назову экземпляр DEV. Instance ID рекомендуется ставить такой же, как и имя экземпляра, во избежание путаницы.
В Installed instances отображаются установленные на сервере экземпляры MSSQL, у меня уже есть один.
Настройка параметров служб SQL Server, кодировка
Во вкладке Service Accounts укажите аккаунты из-под которых будут работать службы SQL Server на хосте. Хорошей практикой считается использование MSA (Managed Service Accounts) и gMSA (Group Managed Service Accounts) технологий, как самых надежных в плане безопасности. Я буду использовать обычный доменный аккаунт.
Выставьте у SQL Server Agent поле Startup Type в Automatic, иначе агент придется запускать вручную.
Также начиная с SQL Server 2016 появилась возможность выставлять параметр IFI (Instant File Initialization) при установке сервера. В инсталляторе он называется “Grant Perform Volume Maintenance Task privilege to SQL Server Database Engine”. Его включение означает, что старые данные не будут перезаписываться нулями при:
- Создании базы данных;
- Добавлении данных в файлы данных или лог файлы;
- Увеличении размера существующих файлов (включая операции авто увеличения);
- Восстановлении базы данных/файловой группы.
Это ускоряет процесс инициализации файлов, но уменьшает безопасность, потом что старые данные не затираются нулями, поэтому старая информация, которая содержалась в этих файлах, может быть частична доступна.
Рекомендую включать этот параметр, если опасность утечки данных несущественна.
На следующем шаге вы должны выбрать Collation.
Грубо говоря, Collation это настройка кодировки SQL Server. Этот параметр устанавливает кодировку страниц, правила сортировки, кодировку для char/varchar и другие языковые настройки.
При установке сервера вы выбираете Collation для всего SQL Server. После установки можно будет поменять этот параметр, но сделать это будет непросто, поэтому нужно сразу выбрать подходящий для ваших задач Collation.
Для СНГ рекомендуется выбирать Cyrillic_General_CI_AS. Если данные будут только на английском, можно выбирать SQL_Latin1_General_CP1_CI_AS.
Если вы планируете использовать SQL Server в боевых условиях, ознакомьтесь с документацией по выбору Collation, так как это важный параметр, хоть он и может быть задан для конкретной базы данных.
Настройка Database Engine в SQL Server
На шаге Database Engine Configuration доступны 6 вкладок, начнем по порядку:
В Server Configuration вы должны выбрать Authentication Mode и указать аккаунт для администратора SQL Server’a.
У вас на выбор есть 2 режима: Windows authentication mode и Mixed mode.
- С Windows аутентификацией авторизоваться смогут только пользователи вашего домена или компьютера под управлением Windows.
- В Mixed mode помимо windows авторизации станет доступна авторизация по учетным данным самого SQL Server’a.
Майкрософт рекомендует использовать Windows Authentication как самый безопасный, но на практике скорее всего вам нужно будет логиниться на сервер из других приложений. Например, написанных на java, и в таком случае без аутентификации SQL сервера не обойтись.
Если вы уверены, что ваши пользователи будут логиниться только с Windows компьютеров и приложений, поддерживающих Windows аутентификацию, то выбирайте Windows authentication mode.
В моём случае я ставлю Mixed mode. В этом режиме вам нужно будет прописать пароль от пользователя sa и выбрать Windows аккаунт, который будет обладать административными правами.
На вкладке Data Directories вы должны выбрать каталог, в которой SQL Server будет хранить базу данных и транзакционные логи.
Для данных лучше всего выделить отдельный RAID массив. Дисковая подсистема критически важна для производительности SQL Server’а, поэтому необходимо выбрать самый хороший из доступных вам вариант хранения данных, будь то NAS или локальный RAID из быстрых дисков.
Хорошей практикой считается разнесение всех директорий (системных баз данных, пользовательских баз данных, логов пользовательских баз данных, резервных копий) на разные хранилища. Таким образом вы добьетесь максимальной производительности от SQL Server’а на уровне работы с хранением данных.
В моём случае я укажу отдельный диск с RAID 1 для всех директорий.
На вкладке TempDB настраиваются параметры для базы tempdb. Её правильная конфигурация важна для производительности сервера, так как эта база участвует практически во всех операциях с данными.
- Number of files – количество файлов данных для tempdb. Вам нужно указать количество файлов в зависимости от ядер процессора. Хорошей практикой считается выставлять количество файлов равным количеству ядер процессора поделенных на 2. То есть на 32 ядра вашего сервера рекомендуется 16 файлов. Также независимо от количества ядер не рекомендуется ставить меньше 8 файлов, это необходимо, чтобы избежать проблем, описанных здесь https://support.microsoft.com/en-us/kb/2154845 .
- Initial size – начальный размер файлов данных tempdb. При каждой перезагрузке сервера, размер tempdb будет сбрасываться до начального размера. Рекомендуется указывать размер файлов данных в зависимости от планируемой нагрузки. Если вы не можете спланировать будущую нагрузку, то оставьте 8 MB. Если вы выделите отдельный массив/диск под файлы tempdb (об этом ниже), то лучше всего будет указать такой размер файлов, который бы полностью заполнил диск, чтобы избежать постоянных операций увеличения файла.
- Autogrowth – шаг увеличения файлов tempdb. Размер нужно ставить в зависимости от начального размера. Оставьте 64 МB, если не можете спланировать нагрузку. Имейте в виду, если включен IFI (Instant File Initialization) то ожидание блокировок на расширение файла будет намного меньше. Не рекомендуется ставить размер шага слишком большим, так как это вызовет существенные задержки при увеличении размера файла.
- Data Directories – директории для размещения файлов данных tempdb. Если вы укажите несколько директорий, файлы будут размещаться по алгоритму Round-robin, то есть циклически. Грубо говоря при указании, например, 4 директорий, файлы данных распределятся по всем директориям в равной степени. Хорошей практикой будет добавить разные дисковые массивы для файлов данных.
- TempDb Log file: Initial size / Autogrowth – настройка начального размера и шага увеличения файла лога tempdb. Стоит придерживаться таких же правил, как и для файлов данных tempdb.
- Log Directory – директория для хранения лог файла tempdb. Лог файл всего 1, независимо от количества файлов данных, указывается всего 1 директория. Если есть возможность, лог файлу также выделите отдельный массив.
Вкладка MaxDOP.
MaxDOP это параметр SQL Server’а который отвечает за параллельное выполнение запросов и соответственно степень параллелизма. Для того чтобы SQL Server использовал все ядра процессора для обработки параллельных планов, установите 0 в качестве значения MaxDOP. Если по каким-то причинам вы хотите отключить параллельное выполнение запросов, установите 1 в качестве значения. Для максимальной производительности настройте MaxDOP согласно правилам в таблице (https://go.microsoft.com/fwlink/?linkid=2084761):
Сервер с одним узлом NUMA | Не более 8 логических процессоров | Значение параметра MAXDOP не должно превышать количество логических процессоров |
Сервер с одним узлом NUMA | Больше 8 логических процессоров | Значение параметра MAXDOP должно быть равно 8 |
Сервер с несколькими узлами NUMA | Не более 16 логических процессоров на узел NUMA | Значение параметра MAXDOP не должно превышать количество логических процессоров на каждый узел NUMA |
Сервер с несколькими узлами NUMA | Больше 16 логических процессоров на каждый узел NUMA | Значение MAXDOP должно быть равно половине количества логических процессоров на узел NUMA со значением MAX, равным 16 |
В моём случае я поставлю 0. Это даст наибольшую производительность для выполнения планов параллельных запросов, но это может вызвать задержки, так как другие запросы должны будут дождаться завершения выполнения текущего запроса, потому что все ядра процессора будут заняты выполнением текущего запроса.
Для “боевого” сервера я всё же рекомендую следовать правилам из таблицы, а также ознакомиться с документацией по ссылке выше.
Вкладка Memory – нужно указать минимальный и максимальный объем оперативной памяти, который будет использовать SQL Server. Так как спрогнозировать нужный объём для сервера довольно сложно, рекомендуется выделить SQL Server’у 80-85% от всего объёма оперативной памяти сервера. Для того чтобы узнать реальный объём используемой оперативной памяти, нужно круглосуточно мониторить потребление оперативной памяти через специальные DMV (Dynamic Management View) и отслеживать пики потребления RAM. Только с наличием этой информации можно спрогнозировать реальный объем потребления оперативки.
Я оставлю Default значения (min 0 и max 2147483647 MB).
Вкладка FILESTREAM – включение технологии FILESTREAM. Она позволяет хранить бинарные файлы на файловой системе и обеспечивает доступ к ним через SQL. Если вы не уверены, что хотите работать с бинарными данными на уровне SQL, то тогда оставьте FILESTREAM выключенным.
Шаг Feature Configuration Rules пройдет автоматически. Ознакомьтесь со сводкой в Ready to Install и жмите Install.
На этом базовая установка SQL Server 2019 Enterprise завершена. В следующей статье мы посмотрим на основные способы анализа производительности и проблем в SQL Server.
Примечание. На более старых версиях ( SQL Server 2014, 2016) некоторых вкладок и параметров может не быть.
Хоть я и не являюсь администратором баз данных, тем не менее мне приходится довольно часто заниматься установкой MS SQL Server. Для себя я выработал определенную процедуру установки, которой и поделюсь в этой статье.
Ставить будем наиболее актуальную на сегодня версию MS SQL Server 2019. Начнем с подготовки.
Системные требования
Для установки SQL Server 2019 требуется минимум 6ГБ дискового пространства, 1ГБ ОЗУ и 64-разрядный процессор с тактовой частотой 1.4ГГц. Это официальные минимальные требования, необходимые для установки. Для работы, конечно же, этого недостаточно.
Установка SQL Server 2019 возможна на Windows Server 2016 или более поздней версии, а также на Windows 10 1507 или более поздней версии. Для серверных ОС поддерживается установка в режиме основных серверных компонентов (Server Core).
Подготовка дисков
Перед установкой необходимо подготовить диски, на которых будут располагаться базы данных. Рекомендуется размещать базы данных и логи транзакций на отдельных физических дисках, а также выделить отдельный диск под TempDB. В нашем случае хватит и одного диска, на котором я просто создам отдельные папки.
При создании и разбиении дисков необходимо установить размер сектора (Allocation unit size) равным 64Kb. Это можно сделать либо из оснастки управления дисками
либо, как вариант, из консоли PowerShell. Например:
New-Partition -DiskNumber 1 -DriveLetter D -UseMaximumSize
Format-Volume -DriveLetter D -AllocationUnitSize 64Kb -FileSystem NTFS -NewFileSystemLabel "Data" -Confirm:$false
Выбор редакции SQL Server
Теперь выберем нужную редакцию (Edition). На данный момент SQL Server доступен в четырех редакциях:
• Express Edition — распространяется бесплатно, но имеет жесткие аппаратные ограничения. Может использовать не больше одного физического процессора или больше 4 ядер многоядерного процессора, не больше 1Гб ОЗУ, а максимальный размер базы ограничен 10Гб;
• Standard Edition — имеет ограничение в 4 сокета или 24 ядра, а также 128Гб на экземпляр сервера. Максимальный размер базы не ограничен;
• Enterprise Edition — не имеет ограничение по использованию вычислительных мощностей;
• Developer Edition — редакция для разработчиков, распространяется бесплатно. Не имеет ограничений, так же как и редакция Enterprise. Эту редакцию запрещено использовать в производственных средах, только для разработки и тестирования.
Примечание. У SQL Server есть еще редакция Web Edition, специально предназначенная для размещения веб-сайтов. На данный момент эта редакция доступна только для партнеров Microsoft по лицензии SPLA (Service Provider License Agreement), поэтому ее не рассматриваем.
Выбор схемы лицензирования
При выборе редакции немаловажную роль играет стоимость лицензий, поэтому стоит коснуться схем лицензирования SQL Server. Есть две схемы лицензирования:
На сервер (SERVER + CAL)
В этой схеме лицензирования на каждый экземпляр SQL Server приобретается одна серверная лицензия. Лицензия назначается на сервер (физический или виртуальный) и не зависит от количества процессорных ядер. Каждая серверная лицензия позволяет клиентам запускать любое количество экземпляров SQL Server в одной операционной системе, физической или виртуальной. Дополнительно требуется приобрести лицензии клиентского доступа (CAL) для каждого устройства (Device CAL) и/или пользователя (User CAL), получающего доступ к экземпляру SQL Server или любому из его компонентов.
Каждая лицензия SQL Server CAL позволяет подключаться к неограниченному количеству баз. Клиентские лицензии можно переназначать другому пользователю или устройству, но не чаще, чем раз в 90 дней (если переназначение не связано с неисправностью устройства или отсутствием человека). Лицензии CAL можно использовать с предыдущими версиями SQL Server (право Downgrade). Например лицензии на SQL Server 2019 можно использовать для подключения к SQL Server 2016.
На ядро (PER CORE)
В этой модели лицензирования каждому ядру сервера, на котором работает SQL Server, должно быть присвоено соответствующее количество лицензий. Клиентские лицензии не требуются.
Редакция Enterprise лицензируется только по ядрам.
Чтобы лицензировать SQL Server, работающий в физической операционной системе, все физические ядра на сервере должны быть лицензированы. Лицензии выпускаются упаковками по 2 штуки (2-core pack). Для каждого физического процессора на сервере требуется минимум четыре лицензии ″на ядро″.
В случае с виртуальными средами есть два варианта лицензирования. В первом варианте можно лицензировать все виртуальные ядра, выделенные виртуальной машине, схема такая же как и для физического сервера.
Второй вариант, доступный только для редакции Enterprise, позволяет лицензировать физические ядра сервера. Лицензирование всех ядер в физическом сервере позволяет запускать SQL Server в физической и виртуальных средах, при этом разрешенное количество операционных систем на сервере равно количеству лицензий ″на ядро″. В такой конфигурации нет никаких ограничений на количество ядер, которые могут быть выделены каждой операционной системе.
При необходимости полностью лицензированному серверу можно назначать дополнительные лицензии ″на ядро″. Каждая дополнительная лицензия позволяет развертывать SQL Server на одной дополнительной виртуальной машине.
Максимальная виртуализация может быть достигнута при использовании Software Assurance Unlimited Virtualization. В этом случае разрешается запускать любое количество экземпляров SQL Server 2019 Enterprise Edition на неограниченном количестве виртуальных машин на сервере со всеми физическими ядрами, полностью лицензированными для SQL Server Enterprise Edition и подпадающими под действие Software Assurance.
Примечание. Кроме двух основных схем y SQL Server 2019 есть отдельная схема лицензирования для кластеров (Big Data Cluster) и для контейнеров (docker и т.п.). Подробную инструкцию по лицензированию SQL Server 2019 можно найти по адресу https://docs.microsoft.com/answers/storage/attachments/96089-sql-server-2019-licensing-guide.pdf.
Загрузка дистрибутива
Загрузить дистрибутив MS SQL Server можно с сайта загрузок Microsoft. Для этого надо перейти по адресу https://www.microsoft.com/en-us/sql-server/sql-server-downloads и выбрать нужную редакцию для загрузки. С сайта загрузится веб-инсталлятор, с помощью которого можно либо сразу запустить установку, либо загрузить полный дистрибутив, что я и рекомендую сделать.
Также стоит проверить список обновлений и при необходимости загрузить наиболее свежее.
Установка
Теперь все готово и можно приступать к установке. Монтируем образ с дистрибутивом и запускаем установщик. В открывшемся окне переходим на вкладку Installation и выбираем пункт меню New SQL Server stand-alone installation or add features to an existing installation.
Выбираем редакцию, которую будем устанавливать. Можно выбрать одну из бесплатных Express или Developer, можно выбрать редакцию Evаluation (ознакомительная редакция SQL Server, которая предоставляет полный функционал Enterprise и работает в течении 180 дней)
или можно ввести имеющийся ключ продукта, который и определит устанавливаемую редакцию.
В коммерческих версиях ключ продукта уже изначально включен в дистрибутив, найти его можно в файле DefaultSetup.ini.
Примечание. У SQL Server есть возможность изменить текущую редакцию продукта. Например можно редакцию Express обновить до Standard, а Standard до Enterprise. Это работает только в сторону повышения, понизить редакцию нельзя.
Переходим дальше и соглашаемся с лицензионным соглашением.
На следующей странице предлагается проверить наличие обновлений. Если согласиться, то установщик полезет на Microsoft Update в поисках обновлений. Это может занять довольно длительное время, да и потом я предпочитаю устанавливать обновления отдельно, поэтому галочку не отмечаем.
Теперь выбираем компоненты SQL Server, которые будем устанавливать. Это важный момент, поэтому остановимся на нем поподробнее. В SQL Server 2019 для установки доступны следующие компоненты:
На уровне отдельного экземпляра SQL Server (Instance Features)
• Database Engine Services – собственно сам движок SQL Server. Единственный обязательный к установке компонент;
• SQL Server Replication – службы репликации. Репликация представляет собой набор технологий копирования и распространения данных и объектов баз данных между базами данных, а также синхронизации баз данных для поддержания согласованности. Компонент довольно часто используются, поэтому рекомендую отметить для установки;
• Machine Learning Services and Language Extensions – службы машинного обучения. Компонент SQL Server, который дает возможность выполнять скрипты на языках Java, Python и R в базе данных. Ставить стоит только в том случае, если есть явная необходимость. Для поддержки языка Java необходимо предварительно установить JDK или JRE, иначе установку продолжить не удастся;
• Full-Text and Semantic Extractions for Search – полнотекстовый и семантический поиск. Полнотекстовый поиск – поиск слов или фраз в текстовых данных, обычно используется для поиска текста в большом объёме данных, так как он значительно быстрей обычного поиска. Семантический поиск является расширением полнотекстового поиска, который позволяет решать более широкий круг задач. Например c помощью семантического поиска, можно находить ключевые слова, то есть наиболее статистически значимые слова документа. Можно находить слова, которые делают два документа похожими. Есть возможность искать документы, которые больше всего походят на данный документ. Компонент часто используется, поэтому я ставлю его по умолчанию, на всякий случай. Обратите внимание, что для семантического поиска вам также понадобится технология FILESTREAM (о ней чуть позже);
• Data Quality Services – службы повышения качества данных. Позволяет построить базу знаний и использовать ее для задач по обеспечению качества данных, таких как исправление, дополнение, стандартизация и устранение дубликатов. DQS позволяет выполнять очистку данных с использованием служб эталонных данных, расположенных в облаке и предоставляемых поставщиками эталонных данных. DQS также предоставляет функции профилирования, встроенные в задачи по обеспечению качества данных, что позволяет анализировать целостность данных;
• PolyBase Query Service For External Data – технология доступа к внешним данным. PolyBase позволяет экземпляру SQL Server запрашивать данные непосредственно из SQL Server, Oracle, Teradata, MongoDB, кластеров Hadoop, Cosmos DB и т.д. без необходимости устанавливать клиентское программное обеспечение для подключения. PolyBase позволяет с помощью запросов T-SQL объединить данные из внешних источников с данными из реляционных таблиц в экземпляре SQL Server.
• Analysis Services – сервис аналитики, также известен как Server Analysis Services (SSAS). Используется для бизнес-аналитики, анализа данных и создания отчетов, таких как Power BI, Excel, Reporting Services и другие подобных.
На уровне всего сервера (Shared Features)
• Machine Learning Server (Standalone) – изолированный сервер машинного обучения, который работает независимо от SQL Server;
• Data Quality Client – автономное приложение, которое подключается к серверу DQS и позволяет выполнять операции по обеспечению качества данных. Предоставляет интуитивно понятный графический пользовательский интерфейс для очистки данных, интеллектуального анализа данных и административных задач в DQS.
• Client Tools Connectivity – клиентские компоненты, предназначенные для обеспечения связи между клиентами и серверами. Включают сетевые библиотеки для DB-Library, OLEDB для OLAP, ODBC, ADODB и ADOMD+. Рекомендуется ставить обязательно;
• Integration Services – службы интеграции данных, известны также как SQL Server Integration Services (SSIS). Позволяют в удобном виде реализовать процесс переноса данных из одного источника в другой по технологии ETL (Extract, Transform, Load). Также SSIS можно использовать для автоматизации других процессов, например, задач связанных с обслуживанием баз данных или каких-либо действий с файлами в операционной системе;
• Client Tools Backwards Compatibility — требуется для обратной совместимости клиентских средств. Включает в себя SQL Distributed Management Objects (SQL-DMO) и Decision Support Objects (DSO). Рекомендую ставить;
• Client Tools SDK – пакет для разработчиков (Software Development Kit). Можно не ставить;
• Distributed Replay Controller/Client – функции распределенного воспроизведения. Используются для моделирования нагрузки и для различного рода тестирования производительности;
• SQL Client Connectivity SDK – содержит пакет SDK Native Client SQL Server (ODBC/OLE DB) для разработки приложений баз данных.
• Master Data Services – позволяет управлять главным набором данных организации. О том, что такое MDS можно узнать из этой статьи. Но скорее всего вам это не нужно 🙂
Примечание. Некоторые компоненты, такие как сервис отчетов (Reporting Services) и средства управления (Management Tools) отсутствуют в дистрибутиве, их предлагается загрузить отдельно.
По умолчанию выбранные компоненты ставятся в стандартную директорию для приложений (C:\Program Files\Microsoft SQL Server). Путь установки можно изменить, хотя без особой необходимости этого лучше не делать.
Отметив необходимые компоненты жмем Next и ждем окончания проверки на совместимость. Если установщик не обнаружит никаких проблем, то переходим к следующему этапу — выбору экземпляра (Instance) SQL Server.
На одну операционную систему можно установить до 50 экземпляров SQL Server. Для того, чтобы как то их различать, первый экземпляр называется экземпляром по умолчанию (Default Instance) с именем MSSQLSERVER, остальные называются именованными (Named Instance) и для них надо придумывать уникальное имя.
В нашем случае на сервере нет установленных экземпляров SQL Server, поэтому просто оставляем все по умолчанию и идем дальше.
На вкладке Service Accounts можно указать учетные записи, под которыми будут работать службы SQL Server. По умолчанию используются виртуальные учетные записи вида NT Service\ServiceName (напр. NT Service\MSSQLSERVER). Это локальные учетные записи, однако службы, запускаемые с виртуальными учетными записями, могут осуществлять доступ к сетевым ресурсам домена с использованием учетных данных компьютера в формате DomainName\ComputerName$.
Рекомендуемым вариантом является использование управляемых учетных записей служб (Managed Service Accounts, MSA), это самый безопасный и надежный вариант. Также можно использовать обычный доменный аккаунт, либо одну из встроенных учетных записей (LocalSystem, NetworkService и т.п.).
Если не планируется создание отказоустойчивого кластера, то можно оставит все как есть. Виртуальные учетные записи не могут использоваться для экземпляра отказоустойчивого кластера SQL Server, так как у виртуальной учетной записи будет отличаться идентификатор безопасности на каждом узле кластера.
Поменяйте режим запуска службы агента (SQL Server Agent) на Automatic. Агент SQL Server — служба Microsoft Windows, выполняющая запланированные административные задачи, например создание резервной копии базы данных.
Также обратите внимание на скромную галочку внизу с названием ″Grant Perform Volume Maintenance Task privilege to SQL Server Database Engine″. Эта галочка включает функцию мгновенной инициализации файлов (Instant File Initialization).
Когда SQL Server резервирует новое место на диске, то он инициализирует его нулями. Данное поведение можно отключить. Возможность резервирования места на диске без инициализации и называется Instant File Initialization. Включение этой функции позволяет сократить время выполнения некоторых операций и снизить нагрузку на дисковую подсистему.
Примечание. Важно отметить, что Instant File Initialization работает только для файлов данных (MDF и NDF). Файлы лога (LDF) всегда инициализируются нулями.
Единственным недостатком данной технологии является снижение безопасности. Пользователь, которому назначено право на выполнение задач обслуживания тома, может удалить том, что может привести к потере данных или отказу в обслуживании. Кроме того, задачи обслуживания диска можно использовать для изменения данных на диске, например для назначение прав пользователей, что может привести к повышению привилегий.
Переходим на вкладку Collation. Параметр Collation определяет, как именно SQL Server должен сравнивать и сортировать строки. Это крайне важный параметр, который влияет на работу всего сервера БД. Его необходимо правильно указать при установке, поскольку потом изменить его крайне сложно. Значение Collation обычно указывается в системных требованиях приложения, которое буде использовать сервер БД.
По умолчанию Collation выбирается исходя из региональных настроек операционной системы. Так для русской версии системы по умолчанию будет выбрано Cyrillic_General_CI_AS, что означает следующее:
• Cyrillic_General — локаль или используемый язык;
• _CI (Case Insensitive) — без учета регистра;
•_AS (Accent Sensitive) — с учетом аксонов или диакритических знаков.
В следующем окне находятся все основные настройки ядра SQL. На вкладке Server Configuration устанавливаем режим аутентификации (Authentication Mode) и указываем пользователей, которые имею право на администрирование сервера. У SQL Server есть 2 режима аутентификации:
• Windows Authentication Mode — проверка подлинности Windows. Является проверкой подлинности по умолчанию, поскольку обеспечивает более высокий уровень безопасности, чем проверка подлинности SQL Server. При подключении пользователя SQL Server не запрашивает его пароль и не выполняет проверку удостоверения, а проверяет достоверность учетных данных с помощью токена участника Windows в операционной системе. Режим проверки подлинности Windows использует протокол безопасности Kerberos, реализует политику паролей в отношении проверки сложности надежных паролей, поддерживает блокировку учетных записей и истечение срока пароля. Соединение, установленное с помощью проверки подлинности Windows, иногда называется доверительным соединением, поскольку SQL Server доверяет учетным данным, предоставляемым Windows;
• Mixed Mode — смешанный режим. В смешанном режиме включены как проверка подлинности Windows, так и проверка подлинности SQL Server. Проверка подлинности Windows доступна всегда, и отключить ее нельзя. Если используется проверка подлинности SQL Server, в SQL Server создаются имена входа, которые не основаны на учетных записях пользователей Windows. И имя пользователя, и пароль создаются с помощью SQL Server и хранятся в нем же. Пользователи, подключающиеся с помощью проверки подлинности SQL Server, должны предоставлять свои учетные данные (имя входа и пароль) каждый раз при установке соединения. При использовании проверки подлинности SQL Server необходимо задавать надежные пароли для всех учетных записей SQL Server .
Если во время установки был выбран смешанный режим проверки подлинности, необходимо задать и подтвердить надежный пароль для встроенной учетной записи системного администратора SQL Server с именем sa. Учетная запись sa устанавливает соединения с помощью проверки подлинности SQL Server .
Если во время установки была выбрана проверка подлинности Windows, программа установки все равно создаст учетную запись sa для проверки подлинности SQL Server , но она будет отключена. Если позже переключиться на смешанный режим проверки подлинности и потребуется учетная запись sa, ее будет нужно включить. Поскольку учетная запись sa широко известна и часто является целью злонамеренных пользователей, ее не рекомендуется включать (за исключением тех случаев, когда это необходимо приложению). Никогда не указывайте пустой или простой пароль для учетной записи sa.
Любая учетная запись Windows или SQL Server может быть указана в качестве системного администратора. Я обычно выбираю смешанный режим, а в качестве администраторов сервера добавляю встроенную группу локальных администраторов (BUILTIN\Administrators).
На вкладке Data Directories указываем расположение пользовательских баз и резервных копий. По умолчанию они располагаются на системном диске, где им совсем не место. По возможности рекомендуется размещать базы данных и логи транзакций на отдельных физических дисках.
Отдельное внимание стоит уделить базе TempDB. Это системная база данных, в которой хранятся временные данные, созданные пользователями и внутренние объекты, создаваемые ядром СУБД. Эта база участвует практически во всех операциях с данными, поэтому ее параметры могут влиять на производительность всего сервера.
Для настройки доступны следующие параметры:
• Number of files – количество файлов данных. Рекомендуется создавать несколько файлов данных в зависимости от количества логических процессоров на сервере. Если логических процессоров меньше 8, рекомендуется создать файл данных для каждого процессора. Если логических процессоров 8 или больше, рекомендуется создать 8 файлов данных и оценить нагрузку на TempDB. Если мониторинг нагрузки покажет, что увеличение количества файлов оправдано, добавляйте по 4 файла данных за раз, но не больше общего числа логических процессоров.
• Initial size – начальный размер файлов данных. При каждой перезагрузке сервера TempDB создается заново, с начальным размером, а затем увеличивается по мере необходимости. Рекомендуется указывать размер файлов данных в зависимости от планируемой нагрузки. Если вы не можете заранее спланировать нагрузку, то оставьте размер по умолчанию. Для достижения максимальной производительности рекомендуется выделить для TempDB отдельный диск и установить суммарный размер файлов таким, чтобы полностью занять весь диск. Это позволит избежать постоянных операций увеличения файла.
Файлы данных должны иметь одинаковый размер, так как SQL Server использует алгоритм пропорционального заполнения, который повышает вероятность выделения памяти в файлах с большим объемом свободного пространства. Разделение TempDB на несколько файлов данных равного размера обеспечивает эффективное выполнение операций с высокой степенью параллелизма.
• Autogrowth – шаг увеличения файлов. Выбирается в зависимости от начального размера. На этапе установки можно оставить значение по умолчанию. Не рекомендуется ставить размер шага слишком большим, так как это вызовет существенные задержки при увеличении размера файла. И еще, если включена функция мгновенной инициализации файлов (Instant File Initialization), то ожидание блокировок на расширение файла будет намного меньше.
• Data Directories – директории для размещения файлов данных. Рекомендуется размещать файлы данных и журнала транзакций для временной базы на специально выделенных физических дисках, отдельно от операционной системы, файла подкачки и других баз данных. Если указать несколько директорий, файлы будут равномерно распределены по ним.
• TempDb Log file — лог файл у TempDB всего один, независимо от количества файлов данных. По настройкам стоит придерживаться таких же правил, как и для файлов данных. Если есть возможность, лог файлу также стоит выделить отдельный диск.
Переходим на вкладку MaxDOP. На многопроцессорном компьютере при выполнении запроса SQL Server может использовать параллелизм, или, говоря проще – выполнять один запрос в несколько потоков. Параметр MaxDOP (Max Degree of parallelism) как раз и отвечает за параллельную обработку данных и определяет максимальное число процессоров, применяемых при выполнении одного запроса.
Параметр MaxDOP определяется редакцией SQL Server, типом процессора и операционной системой. Чтобы разрешить серверу самому определять максимальную степень параллелизма, установите 0 в качестве значения данного параметра. И наоборот, для отключения многопоточности присвойте параметру значение 1. Если указано значение, превышающее количество доступных процессоров, используется фактическое число доступных процессоров. Если у компьютера только один процессор, то значение параметра MaxDOP учитываться не будет.
Установка MAXDOP на 2, 4 или 8 обычно обеспечивает наилучшие результаты в большинстве случаев использования.
Для максимальной производительности можно воспользоваться табличкой:
NUMA nodes | Logical processors | MAXDOP value |
---|---|---|
Одна | ≤ 8 | 4, 2, или количество ядер (для 1 или 2-ядерного процессора) |
Одна | > 8 | 8, 4, or 2 |
Несколько | ≤ 16 | 8, 4, or 2 |
Несколько | > 16 | 16, 8, 4, or 2 |
Примечание. В данном случае под Numa Node подразумевается физический процессор (сокет).
На вкладке Memory можно указать максимально можно указать минимальный и максимальный объем оперативной памяти, который будет доступен для SQL Server.
При установке можно оставить значения по умолчанию, их всегда можно скорректировать по мере необходимости. Но надо помнить, что значение по умолчанию позволяет SQL Server использовать столько памяти, сколько ему потребуется. Он cможет занять почти всю память ОС и вызвать проблемы с производительностью сервера. В самом простом случае можно следовать правилу — оставляем 8ГБ на нужды операционной системы, остальное отдаем SQL Server.
На вкладке FILESTREAM можно включить технологию потокового доступа к данным. Технология FILESTREAM объединяет SQL Server с файловой системой NTFS, позволяя размещать большие двоичные данные (документы, изображения, видео и т. д.) непосредственно на файловой системе. С помощью инструкций Transact-SQL можно вставлять, обновлять, запрашивать, выполнять поиск и резервное копирование данных, а потоковый доступ к данным обеспечивает API файловой системы NTFS. Говоря проще, FILESTREAM позволяет серверу БД хранить данные на файловой системе и работать с ними.
По умолчанию функционал FILESTREAM отключен, и если вы не уверены в его необходимости, то оставьте его выключенным.
Завершив настройки жмем Next и переходим к финальной части установки. Здесь мы можем проверить настройки и при необходимости вернуться назад и поправить их.
Также обратите внимание на ссылку внизу, она указывает на расположение конфигурационного файла ConfigurationFile.ini. Все произведенные вами настройки сохраняютяс в этом файле. Этот файл в дальнейшем можно использовать для автоматизации процесса установки. Для этого достаточно запустить установщик из командной строки и указать путь к файлу в качестве параметра. Например:
Setup.exe /ConfigurationFile=ConfigurationFile.INI
Запускаем установку и дожидаемся ее завершения.
Но это еще не все. Как я уже говорил, в дистрибутив не входят средства управления, их надо загружать отдельно. В принципе можно обойтись без них, к серверу можно подключаться удаленно. Но это не очень удобно, на мой взгляд, поэтому я всегда ставлю SQL Server Management Studio. Найти ее можно просто введя в поисковике SSMS. Также в меню установочного диска есть пункт Install SQL Server Management Tools, выбрав который вы автоматически попадете на страницу загрузки.
Сама установка не требует никаких усилий, надо просто запустить инсталлятор, нажать Install
и дождаться окончания процесса. По завершению потребуется перезагрузка.
После перезагрузки запускаем SSMS и заходим на сервер.
На этом установку можно считать завершенной.
Microsoft recommends Windows Server Core for most infrastructure services and for applications such as Exchange 2019. You can also run SQL Server on Server Core. However, the installation requires a few steps from the command line.
Contents
- Minimal installer for the GUI
- GUI wizard does not work
- Installation from the command line
- Completing the installation
- Allow remote administration for SQL Server
- Configuring the firewall
- Author
- Recent Posts
Wolfgang Sommergut has over 20 years of experience in IT journalism. He has also worked as a system administrator and as a tech consultant. Today he runs the German publication WindowsPro.de.
Even if Server Core does not support all SQL Server services, such as reporting, master data, or data quality services, such a setup should still be sufficient for most tasks. This is especially true for the typical applications of the Express Edition.
Minimal installer for the GUI
The installation has not changed since SQL Server 2017, so the following instructions apply equally to both versions. It starts by fetching an installer smaller than 6 MB from the SQL Server 2019 download page, which in turn will request the required files from the internet.
The tool also starts with a graphical interface under Server Core and offers three options: Basic, Custom, and Download Media.
Installation options in the graphical setup for SQL Server 2019
The first variant is straightforward: after you confirm the end-user license agreement (EULA) and select the target directory, the installer sets up SQL Server with the default values. This setup is limited to the database engine only.
After selecting the installation directory, the standard setup will start
If you choose the user-defined installation, the program downloads the installation files and then opens the actual SQL Server setup. Here you can select the various options and components with the help of a wizard.
GUI wizard does not work
The download of the complete installation media will be the preferred option if the database server does not have access to the internet. You can download the files to a workstation and then transfer them to the target system.
Download the installation media for SQL Server
Executing the .exe file then unpacks the archive into a subdirectory from where you can run setup.exe.
The command below opens the same GUI you get during the user-defined installation.
.\setup.exe /UIMODE=EnableUIOnServerCore
The wizard led installation of SQL Server does not work under Server Core
In both cases, this proves to be unusable under Server Core. In both Server 2016 and Server 2019 with Core App Compatibility installed, clicks on various options yielded no effect in my lab.
Installation from the command line
So if you don’t want to use the standard installation, the only other option is to set up SQL Server from the command line. The setup provides a silent mode for this, which you can activate with the /Q switch.
Installing the SQL engine requires the Action parameter (with the possible values install, uninstall, or upgrade) and IAcceptSQLServerLicenseTerms. Also, you must pass values for Features to the setup. Possible values are SQLENGINE, FullText, Replication, AS, IS, and Conn. If you specify several of them, you need to separate them with a comma.
Running setup.exe to install SQL Server 2019 Express
Other mandatory parameters include Instanceid and Instancename (both have the default value MSSQLSERVER) as well as Sqlsvcaccount and Sqlsvcpassword, with which you specify the account or its password under which SQL Server will run.
You can install the Express Edition based on these parameters, but the full version also requires that you assign the sysadmin role to certain users with Sqlsysadminaccounts. Complete documentation of all setup parameters is here on Microsoft Docs.
Completing the installation
If you plan to manage SQL Server remotely, you should add this parameter when installing on Server Core:
TCPEnabled=1
Otherwise you may have to grapple with Windows Management Instrumentation (WMI) and the PowerShell module sqlserver to activate this protocol afterward.
After the installation is finished, you can run this PowerShell command to verify whether the setup was successful:
Get-CimInstance Win32_product | ? Name -Like *SQL* | select Name, Caption
Subsequent verification of SQL Server installation with PowerShell
If you need the browser service, set its startup type to automatic using PowerShell, and start the service:
Set-Service -Name SQLBrowser -StartupType Automatic Start-Service -Name SQLBrowser
Allow remote administration for SQL Server
In the next step, you open SQL Server for remote management using the command-line tool sqlcmd.exe installed alongside the database. If you chose the default installation at the beginning of the GUI installer, you can click the Connect button to start the program instead of launching it manually. Then enter the following commands:
EXEC sys.sp_configure N'remote access', N'1' GO RECONFIGURE WITH OVERRIDE GO
Configuring SQL Server for remote access with sqlcmd.exe
Configuring the firewall
Finally, it is necessary to open the firewall for managing SQL Server remotely. You can do this via PowerShell:
New-NetFirewallRule -DisplayName "SQL Server" -Direction Inbound -Protocol TCP -LocalPort 1433 -Action allow
If you have installed other services in addition to the SQL engine, you can configure the firewall for them using this script by Ryan Mangan.
Opening a firewall port for SQL Server management
Now the path should be clear for the remote management of SQL Server. With SQL Management Studio, Microsoft offers a powerful tool for this purpose. It is currently available in version 18.4 and can also manage SQL Server 2019.
Subscribe to 4sysops newsletter!
Logging on to SQL Server using SQL Management Studio
Log in with the account and the authentication method you previously specified during setup.
Dear readers of our blog, we’d like to recommend you to visit the main page of our website, where you can learn about our product SQLS*Plus and its advantages.
SQLS*Plus — best SQL Server command line reporting and automation tool! SQLS*Plus is several orders of magnitude better than SQL Server sqlcmd and osql command line tools.
Enteros UpBeat offers a patented database performance management SaaS platform. It proactively identifies root causes of complex revenue-impacting database performance issues across a growing number of RDBMS, NoSQL, and deep/machine learning database platforms. We support Oracle, SQL Server, IBM DB2, MongoDB, Casandra, MySQL, Amazon Aurora, and other database systems.
2 June 2020
In this article we will step by step cover the installation of Microsoft SQL Server 2019 with a description of all options, components, current recommendations and best practices.
MS SQL Server is the leading DBMS (Relational Database Management System) and also the main competitor of Oracle Database in the corporate segment. In CIS MSSQL is most often used for own application software development and for 1C.
MS SQL Server 2019 editions
There are 5 issues (editions) of MSSQL 2019 in total:
- Express is a free edition for use. The functionality is quite limited, the most tangible limitation of the Express version is the maximum base size of 10 GB. This edition is suitable for small projects such as student work or SQL/T-SQL learning.
- Standard is a full-fledged paid edition, but many functions still do not. The maximum amount of RAM that SQL Server can use is 128 GB, and there are no AlwaysOn accessibility groups or other components. Standard is designed for applications in small organizations.
- Enterprise includes all possible functions and components, there are no limitations. Enterprise edition is usually used by large corporations or companies that need the functionality of this version.
- Developer edition as well as Enterprise edition has no limitations and can be used for free, but it can be used only for application development and testing.
- Web edition is almost the same as standard, except for stronger limitations in functionality and correspondingly lower licensing costs.
Features of SQL Server licensing
MS SQL Server is licensed for 2 models:
- PER CORE – licenses MSSQL on server cores
- SERVER + CAL – a license for the entire server and for each user who will work with the server
Enterprise edition can only be licensed by PER CORE type
Also in MSSQL Server 2019 there is a new feature for licensing containers, virtual machines and Big Data Clusters.
For more information on SQL Server licensing, please see a separate article.
Getting started with SQL Server installation
In this article we will install MS SQL Server 2019 Enterprise Edition on Windows Server 2019.
Note. In SQL Server 2019 there is full support for Linux, and respectively Docker and Kubernetes.
- Download and unpack the SQL Server 2019 installation image. Run setup.exe;
- Since in this article we are going to install a normal isolated instance, on the Installation tab select “New SQL Server stand-alone installation”.
In SQL Server installer you can perform many other actions: update an old instance, fix a broken one and some other things.
SQL Server update options during installation
At this point, you can enable Windows Update to search for updates. It is up to you to enable this option or not. It all depends on your update scheduling and server resilience requirements. If you do not have a clear service plan for your servers, it is best to leave this option enabled.
At this step, you can see such a mistake:
Error 0x80244022: Exception from HRESULT: 0x80244022
This is due to problems with the Windows Update service.
Press Next.
The Install Setup Files step will happen automatically. It will prepare the files for installation.
Install Rules will also pass automatically if the installer does not find problems that need to be resolved before installing MSSQL (for example, reboot your computer or if your version of Windows is incompatible with the version of SQL Server).
Type of installation of SQL Server
At this step, you can choose to install a new instance or add functionality to an already installed instance. In our case, choose “Perform a new installation”. Choose the type of sql server installation – new installation
Now you have to enter the product key. If you do not have a key, select Free edition (e.g. Developer), but keep in mind that with the Developer edition you are only allowed to develop and test software, but not to use the server in a productive environment. enter the installation key of the sql server
At the step License Terms we accept the license agreement.
Components of SQL Server 2019: what you need, what you need to install
At this stage you are offered to install various SQL Server components. Let’s take a closer look at them, see what you need to install in different situations:
- Database Engine Services is the main engine of SQL Server. It is obligatory to install.
- SQL Server Replication – replication services. The component is used quite often, so if you are not sure if you need it, it is better to mark it for installation.
- Machine Learning Services and Language Extensions – services to execute R/Python/Java code in the SQL Server context. This is necessary if you are going to do Machine Learning.
- Full-Text and Semantic Extractions for Search – This component is necessary if you need a full-text search technology or a semantic search in documents (e.g. docx). In the case of semantic document searches, you will also need FILESTREAM, about it below.
- Data Quality Services – services for correcting and validating data. If you are not sure if you need DQS, it is better not to install it.
- PolyBase Query Service For External Data – technology to access external data, for example, on another SQL Server or in Oracle Database. Java connector for HDFS data sources refers to PolyBase technology and is needed in case you want to work with HDFS technology.
- Analysis Services – also known as SSAS. Technology for business reports (BI) and work with OLAP. Used in large companies for reporting.
Next, we move on to the list of Shared Features (features that apply to the entire server, not to a particular instance).
- Machine Learning Server (Standalone) – the same as the Machine Learning Services and Language Extensions, but with the ability to install without the SQL Server engine itself.
- Data Quality Client – the same as DQS, only standalone.
- Client Tools Connectivity – ODBC, OLE DB and some other libraries. We recommend to set necessarily.
- Integration Services – data integration services, also known as SSIS. Technology for ETL (Extract, Transform, Load) data. SSIS is needed if you want to automate data import and change it during the import process. Scale Out Master/Worker is needed to scale the operation of SSIS. If you are not sure if you need it, do not mark it.
- Client Tools Backwards Compatibility – Outdated DMV and system procedures. I recommend you put them in.
- Client Tools SDK – A resource pack for developers. You may not want to install it if you are not sure if you need it.
- Distributed Replay Controller/Client – Repeats and improves the functionality of SQL Server Profiler. Distributed Replay services are needed for load modeling and performance testing of all kinds.
- SQL Client Connectivity SDK – ODBC/OLE DB SDK for developers.
- Master Data Services – component from Microsoft Power BI. Needed for data analysis, validation, integration and correction.
Some of these components (such as Java connector for HDFS data sources) may not be available in older versions of SQL Server.
Just below, on the same step, you can specify a directory for SQL Server files. If you have no good reason to change it, then leave the default one (C:\Program Files\Microsoft SQL Server\).
Once you have selected the MSSQL components you need, the installer checks the compatibility of the components with your system, and if there are no problems, this step will go automatically.
Configure SQL Server instance naming
You can leave the Default Instance parameter, in which case your instance name will be MSSQLSERVER. When you select Named Instance, you specify the name of your SQL Server instance. In my case, I will name the DEV instance. It is recommended that you set the Instance ID to the same name as the instance name to avoid confusion.
The Installed instances displays the MSSQL instance installed on the server, I already have one.
Configuring SQL Server service parameters, encoding
On the Service Accounts tab, specify the accounts from under which the SQL Server services on the host will run. It is good practice to use MSA (Managed Service Accounts) and gMSA (Group Managed Service Accounts) technologies as the most secure. I will use a normal domain account.
Select the Startup Type field in Automatic from the SQL Server Agent, otherwise the agent will have to be run manually.
Also, starting with SQL Server 2016 it is now possible to set the IFI (Instant File Initialization) parameter when installing the server. In installer it is called “Grant Perform Volume Maintenance Task privilege to SQL Server Database Engine”. Enabling it means that old data will not be overwritten with zeros:
- Creating a database;
- Adding data to data files or log files;
- Increasing the size of existing files (including auto zoom operations);
- Restore database/file group.
This speeds up the process of initializing files, but reduces security by not overwriting old data with zeros, so the old information contained in these files may be partially available.
I recommend enabling this option if the risk of data leakage is not significant.
On the next step, you must select Collation.
Roughly speaking, Collation is a configuration of SQL Server encoding. This parameter sets page encoding, sorting rules, char/varchar encoding and other language settings.
When you install the server, you select Collation for the whole SQL Server. After installation, you can change this parameter, but it will not be easy to do, so you need to immediately select the right Collation for your tasks.
If you plan to use SQL Server in combat conditions, read the documentation on choosing Collation, as it is an important parameter, although it can be set for a specific database.
Configure Database Engine in SQL Server
On the Database Engine Configuration step 6 tabs are available, let’s start in order:
In Server Configuration you must select Authentication Mode and specify an account for the SQL Server administrator.
You have 2 modes to choose from: Windows authentication mode and Mixed mode.
- With Windows authentication, only users on your domain or Windows computer can authenticate.
In Mixed mode, in addition to windows authentication, you will be able to authenticate using the credentials of SQL Server itself. - Microsoft recommends that you use Windows Authentication as the most secure, but in practice you will most likely need to login to a server from other applications. For example, applications that are written in java, in which case you can’t do without SQL Server authentication.
If you are sure that your users will only login from Windows computers and applications that support Windows authentication, then choose Windows authentication mode.
In my case, I will set the Mixed mode. In this mode, you will need to prescribe a password from user sa and select a Windows account that has administrative privileges.
On the Data Directories tab, you must select the directory in which SQL Server will store the database and transaction logs.
For data, it is best to allocate a separate RAID array. The disk subsystem is critical to SQL Server performance, so you must choose the best storage option available to you, whether it is NAS or local RAID from fast disks.
It is good practice to separate all directories (system databases, user databases, user database logs, backups) into different storage. In this way you will get the maximum performance from SQL Server at the storage level.
In my case I will specify a separate drive with RAID 1 for all directories.
The TempDB tab is used to configure parameters for the tempdb base. Its correct configuration is important for server performance, as this database is involved in almost all data operations.
- Number of files is the number of data files for tempdb. You need to specify the number of files depending on the processor cores. It is good practice to set the number of files to the number of processor cores divided by 2. That is 16 files are recommended for 32 cores of your server. Also regardless of the number of cores it is not recommended to set less than 8 files, it is necessary to avoid the problems described here https://support.microsoft.com/en-us/kb/2154845 .
- Initial size is the initial size of tempdb data files. Each time you reboot your server, the tempdb size will be reset to its initial size. It is recommended to specify the size of the data files depending on the planned load. If you cannot plan your future load, then leave 8 MB. If you allocate a separate array/disk for the tempdb files (as discussed below), it is best to specify a file size that will fill the disk completely to avoid constant file enlargement operations.
- Autogrowth is the step to enlarge tempdb files. The size should be set according to the initial size. Leave 64MB if you cannot plan the load. Note that if IFI (Instant File Initialization) is enabled, the waiting time for locks on file extension will be much less. It is not recommended to set the step size too large, as this will cause significant delays when increasing the file size.
- Data Directories – directories for placing tempdb data files. If you specify several directories, the files will be placed according to the Round-robin algorithm, i.e. cyclically. Roughly speaking, if you specify, for example, 4 directories, the data files will be distributed equally across all directories. It is good practice to add different disk arrays for data files.
- TempDb Log file: Initial size / Autogrowth – setting the initial size and step of increasing the tempdb log file. You should follow the same rules as for tempdb data files.
- Log Directory – directory for storing the tempdb log file. Log file is only 1, regardless of the number of data files, you should specify only 1 directory. If possible, the log file should also have a separate array.
Tab MaxDOP
MaxDOP is a parameter of SQL Server that is responsible for parallel execution of queries and, accordingly, the degree of parallelism. For SQL Server to use all cores of the processor to process parallel plans, set 0 as the MaxDOP value. If for some reason you want to disable parallel execution of queries, set 1 as a value.
Tab Memory
Tab Memory – you must specify the minimum and maximum amount of RAM that will use SQL Server. Since it is difficult to predict the required amount for the server, it is recommended to allocate SQL Server 80-85% of the total amount of RAM. In order to know the real amount of RAM used, you need to monitor RAM consumption 24 hours a day through special DMV (Dynamic Management View) and monitor RAM consumption peaks. Only with this information can you predict the actual RAM consumption.
Tab FILESTREAM
Tab FILESTREAM – enabling FILESTREAM technology. It allows you to store binary files on the file system and provides access to them via SQL. If you are not sure that you want to work with binary data at the SQL level, then leave FILESTREAM off.
The Feature Configuration Rules step will go automatically. Read the summary in Ready to Install and click Install.
This completes the basic installation of SQL Server 2019 Enterprise.
Tags: Microsoft SQL Server, SQL, sql server, sqls, SQLS*Plus
Windows OS Hub / SQL Server / MS SQL Server 2019 Installation Guide: Basic Settings and Recommendations
In this article we will describe step-by-step Microsoft SQL Server 2019 installation and tell about all options, components, relevant recommendations and best practices.
MS SQL Server is a leading relational database management system and the main competitor of Oracle Database in the corporate segment.
Contents:
- MS SQL Server 2019 Editions
- SQL Server Licensing
- Starting SQL Server Installation
- Installing SQL Server 2019 Components
- SQL Server Instance Name
- Configuring SQL Server Service Settings
- Configure Database Engine Options on SQL Server
MS SQL Server 2019 Editions
There are 5 MSSQL 2019 editions:
- Express is a free edition. It has a limited number of features, the most important restriction is the maximum database size of 10 GB. This edition is suitable for small projects, like student works, or studying SQL/T-SQL;
- Standard is a full-featured commercial edition. However, it also has some restrictions. The maximum RAM size the SQL Server can use is 128 GB. AlwaysOn availability groups and some other components are not included. The Standard edition may be applied in small organizations;
- Enterprise includes all possible features and components without any restrictions. The Enterprise edition is typically used by large corporations or companies that require features offered in it;
- Developer edition, like the Enterprise one, doesn’t have any restrictions and is free, but you can use it only to develop and test apps;
- Web edition is similar to Standard, but it has more restrictions and, consequently, lower licensing cost.
SQL Server Licensing
MS SQL Server uses 2 licensing models:
- PER CORE — MSSQL is licensed depending on the number of physical cores on a host (server);
- SERVER + CAL — a license is purchased for a server and each user working with it.
Enterprise edition can be licensed using PER CORE model only.
Also, you can license containers, virtual machines and Big Data Clusters in MSSQL Server 2019.
SQL Server Standard may be licensed using either of the models (Server+CAL or Per Core).
SQL Server Enterprise is licensed using Per Core model only.
SQL Server Per Core Licensing
This licensing model is used for servers with a lot of clients or in cases when the number of clients is unknown. The licensing model allows an unlimited number of users or devices to connect to the SQL Server both inside or outside your organization.
You don’t need to purchase additional client licenses (CALs).
Per Core model assumes that you buy licenses to cover all cores of your host running SQL Server. Here are the main requirements and restrictions:
- One license per two cores (2Lic Core);
- To license a server, you must buy at least two 2-core licenses;
- When running on a physical server (physical operating system environment — POSE), all server cores must be licensed.
MS SQL Server CAL + Server Licensing
According to this licensing model, one server license is purchased for each SQL Server instance. The license is tied to a physical (virtual) server (the number of sockets and cores on the host doesn’t matter). Then you will have to buy client licenses (CAL) for each device or user connecting to your SQL Server.
SQL Server CALs (like RDS CALs) are of two types::
- User CAL is purchased for user accounts that connect to SQL Server with a server license;
- Device CAL – is purchased for all devices used to connect to SQL Server with a server license.
Each SQL Server CAL allows connecting to any number of SQL Server databases and instances.
Since User CAL and Device CAL have the same price, it is recommended that you evaluate the cost-effectiveness of purchasing user or device licenses type in advance.
SQL Server licensing examples:
- 20 users use SQL Server from 20 known devices. In this case, it doesn’t matter what type of SQL CAL to buy.
- 20 users use SQL Server from 50 devices. In this case, it is better to purchase ‘per user’ CALs.
- 50 users use SQL Server from 20 devices. In this case, it will be efficient to buy ‘per device’ CALs.
The following does not matter when estimating the number of SQL Server CALs:
- The number of hosts running SQL Server in your company;
- The number of user accounts on servers;
- The number of concurrent connections to servers;
- The number of business applications between your SQL Server and clients;
- The number of RDS (terminal) servers between SQL Server and clients;
- Users in the staff of any companies;
- Device ownership by people or companies.
Please note that CALs can be reassigned to another user or device only once in 90 days. CALs allow to use previous versions of SQL Server (downgrade rights).
For correct licensing, use SQL Server CALs of the same or newer version as your SQL Server. For example, to access SQL Server 2017 Standard Edition, you need SQL CAL 2019 or SQL CAL 2017.
Starting SQL Server Installation
In this article, we will install MS SQL Server 2019 Enterprise Edition on Windows Server 2019.
Note. SQL Server 2019 has full Linux support, as well as Docker and Kubernetes.
- Download and mount the SQL Server 2019 installation image. Run setup.exe.
- Since in this article we will install a standalone instance, select New SQL Server stand-alone installation in the Installation tab.
You can do many other things in the SQL Server installation wizard: upgrade a previous instance, fix any errors, etc.
SQL Server Update Settings
At this step, you can enable the search for updates via Windows Update. It’s up to you to decide whether to do it. If you don’t have a clear update plan for your servers, it is better to enable this setting.
Click Next.
The Install Setup Files step will be done automatically. It will prepare SQL Server files for the installation.
Install Rules will also be done automatically if the wizard doesn’t find any problems to be solved prior to MSSQL installation (like the prompt to restart your computer or incompatibility of your Windows edition with the SQL Server version).
SQL Server Installation Type
In this step, you can select whether to install a new instance of SQL server or add features to an installed instance. In our case, check “Perform a new installation of SQL Server 2019”.
Then enter your SQL product key. If you don’t have it, select the free edition (like Developer), but remember that with the Developer edition you can only develop or test software (don’t use in production tasks).
In the License Terms step, accept the license agreement.
Installing SQL Server 2019 Components
In this step, you are prompted to install different SQL Server components. Let’s see what they are and which of them to install:
- Database Engine Services is a basic SQL Server engine that must be installed.
- SQL Server Replication is the replication services. This feature is used quite often, so if you are not sure whether you need it, it is better to check it for the installation.
- Machine Learning Services and Language Extensions are the services that run an R/Python/Java code in the SQL Server context. It is necessary if you are going to use Machine Learning.
- Full-Text and Semantic Extractions for Search – you will need this feature if you need a full-text search technology or semantic search in the documents (for example, in .docx). In case of semantic search, you will also need FILESTREAM. We will tell about this feature later.
- Data Quality Services are the services to correct or validate data. If you are not sure if you need DQS, it is better not to install it.
- PolyBase Query Service For External Data allows access to external data, for example located on another SQL Server or in Oracle Database. Java connector for HDFS data sources is related to the PolyBase technology and if you want to use HDFS technology, install it.
- Analysis Services is also known as SSAS. The technology is used for business reporting (BI) and OLAP in large companies.
Then move on to the list of Shared Features (functions that apply to the entire server, and not to a specific instance).
- Machine Learning Server (Standalone) is the same as Machine Learning Services and Language Extensions, but it can be installed without the SQL Server engine.
- Data Quality Client is a standalone DQS version.
- Client Tools Connectivity includes ODBC, OLE DB and some other libraries. It is recommended to install them.
- Integration Services are data integration services, also known as SSIS. It is used in data ETL (Extract, Transform, Load). SSIS are necessary if you want to import data automatically and change them while importing. Scale Out Master/Worker are used to scale SSIS operation. If you are not sure if you need them, don’t check the feature.
- Client Tools Backwards Compatibility are legacy DMVs and system procedures. These are recommended for installation.
- Client Tools SDK is a developer tool kit. If you are not sure you need it, don’t install the SDK.
- Distributed Replay Controller/Client duplicates and improves SQL Server Profiler features. Distributed Replay services simulate load for different performance tests.
- SQL Client Connectivity SDK is as ODBC/OLE DB SDK for developers.
- Master Data Services is a Microsoft Power BI component. It is used to analyze, validate, integrate or correct data.
Some of the features (like Java connector for HDFS data sources) may not be available in previous SQL Server versions.
In the same step, you can specify a directory for SQL Server files. Unless you have a compelling reason to change it, leave the default (C:\Program Files\Microsoft SQL Server\).
After you have selected MSSQL features you need, the installation wizard will check their compatibility with your system, and if there are no problems, this step will be completed automatically.
SQL Server Instance Name
You can leave the Default Instance option. Then the name of your instance will be MSSQLSERVER. If you select Named Instance, you can configure your SQL Server name. In my case, I’ll name my instance DEV. It is recommended to enter the same Instance ID as its name to avoid confusion.
In the Installed instances list, MSSQL instances installed on the server are shown. I have got one.
Configuring SQL Server Service Settings
On the Service Accounts tab, specify the accounts under which SQL Server services will run on the host. The best practice is to use MSA (Managed Service Accounts) or gMSA (Group Managed Service Accounts) as they are the most secure ones. I will use a regular domain user account.
Set the Startup Type to Automatic for the SQL Server Agent or you will have to run the agent manually.
Also, you can set IFI (Instant File Initialization) during the server installation starting from SQL Server 2016. It is called “Grant Perform Volume Maintenance Task privilege to SQL Server Database Engine” in the installation wizard. If you enable it, old data won’t overwritten with zeroes if you:
- Create a database;
- Add data to data or log files;
- Expand the size of existing files (including auto-growth operations);
- Recover a database or file group.
It will speed up file initialization, but affects security since old data are not zeroed (old information in the files may be partially available).
I recommend to enable the setting if the data leak threat is low.
In the next step, you must select the Collation.
Collation is the SQL Server encoding. This parameter sets page encoding, sorting rules, char/varchar encoding and other language-related settings.
During server installation, you select Collation for the whole SQL Server. After the installation, you will be able to edit the setting, but it is rather hard to do it, so it is better to select a suitable Collation at once.
If you have data in English only, you may select SQL_Latin1_General_CP1_CI_AS.
If you are going to use SQL Server in productive tasks, see the Collation section of the documentation, since it is an important setting though it can be set for each database separately.
Configure Database Engine Options on SQL Server
In the Database Engine Configuration step, 6 tabs are available, let’s look at them in turn:
In Server Configuration, select Authentication Mode and specify the SQL Server administrator account.
You have 2 modes to choose from: Windows authentication mode and Mixed mode.
- Only users of your domain or computer running Windows will be able to authenticate using Windows authentication.
- In the Mixed mode, you will also be able to authenticate using your SQL Server account.
Microsoft recommends using Windows authentication as the most secure method, however, in practice you are likely to log on to your server from other apps as well. For example, from those written on Java. Then you will have to use SQL Server authentication.
If you are sure that your users will only log on from Windows computers or apps that support Windows authentication, then select Windows authentication mode.
In my case, I check Mixed mode. In this mode, you will have to specify a sa
user password and select a Windows account that will have admin privileges.
In the Data Directories tab, select the directory where your SQL Server will store database files and transaction logs.
It is better to use a separate RAID drive to store your data. A disk subsystem is critically important for an SQL Server performance, so use the best available variant of data storage, for example, NAS or a local RAID of fast disks.
Keeping all directories (system databases, user database logs, backups) in different storages is considered a good practice. Thus, you will get maximum SQL Server performance on the data storage level.
In my case, I will specify a separate RAID 1 drive for all folders.
In the TempDB tab, you can configure tempdb settings. Its correct configuration is important for your server performance, since this database is involved almost in all operations with data.
- Number of files is the number of data files for tempdb. You must specify the number of files depending on the number of CPU cores. A good practice is to specify the number of files equal to the number of CPU cores divided by 2. It means that 16 files are recommended for a 32-core server. Also, it is not recommended to specify less than 8 files independent of the number of cores. It is necessary to avoid problems described here: https://support.microsoft.com/en-us/kb/2154845 .
- Initial size is the initial size of tempdb data files. After each server restart, the tempdb size will be reset to its initial size. It is recommended to specify the data file size depending on the planned load. If you cannot estimate it, leave the value at 8 MB. If you allocate a special array/drive for your tembdb files (we will discuss it below), it is better to specify the file size so that they occupy the whole disk to avoid constant file growth.
- Autogrowth is the step of tempdb file incremental growth. This parameter must be set depending on the initial size. Leave it 64 MB if you cannot estimate your future load. Note that if IFI (Instant File Initialization) is enabled, the time to wait for file growth block will be significantly less. It is not recommended to set a large value of the incremental size, since it will result it considerable delays when increasing the file size.
- Data Directories are the directories where tempdb files will be located. If you specify multiple directories, the files will be placed following the Round-robin algorithm, i. e., in a cycle. In other words, if you specify 4 directories, the data files will be distributed equally across all directories. The best practice is to add different disk arrays for your data files.
- TempDb Log file: Initial size/Autogrowth allows to configure the initial size and step of the incremental growth of your tempdb log file. The same rules apply as for tempdb data files.
- Log Directory is the directory where the tempdb log file is stored. There is only 1 log file independent of the number of data files you have, and only 1 directory is specified. If possible, allocate a separate array for the log file as well.
The MaxDOP tab.
MaxDOP in an SQL Server setting that is responsible for running parallel queries and parallelism degree. In order your SQL Server to use all CPU cores in processing parallel plans, set 0
as the MaxDOP value. If you want to disable parallel queries on some reason, set 1
as the value. To gain maximum performance, configure MaxDOP according to the rules in the table below (https://go.microsoft.com/fwlink/?linkid=2084761):
Server configuration | Number of processors | Guidance |
Server with single NUMA node | Less than or equal to 8 logical processors | Set MAXDOP at or below # of logical processors |
Server with single NUMA node | Greater than 8 logical processors | Set MAXDOP at 8 |
Server with multiple NUMA nodes | Less than or equal to 16 logical processors per NUMA node | Set MAXDOP at or below # of logical processors per NUMA node |
Server with multiple NUMA nodes | Greater than 16 logical processors per NUMA node | Set MAXDOP at half the number of logical processors per NUMA node with a MAX value of 16 |
In my case, I will set it to 0. This will give me maximum performance to run parallel queries, but it can also result in delays since other processes will have to wait till the current process is over, because all processor cores will be busy with executing the current query.
I still recommend to follow the rules listed in the table above for a server with a high workload. Also see the documentation following the link above.
In the Memory tab, specify the minimum and maximum RAM size your SQL Server will use. Since it is quite hard to estimate the right size for a server, it is recommended to dedicate 80-85% of the whole server RAM to your SQL Server. To know the real size of RAM used, you need to monitor RAM usage 24 hours a day using special DMVs (Dynamic Management View). You can estimate a real RAM usage only if you have these data.
I will leave the default values (min 0 and max 2147483647 MB).
In the FILESTREAM tab, you can enable FILESTREAM feature. It allows to store binary files on the file system and provides access to them through SQL. If you are not sure if you want to work with binary data on the SQL level, leave FILESTREAM disabled.
The Feature Configuration Rules step will be done automatically. Read the information in the Ready to Install section and click Install.
Thus, you have completed basic SQL Server 2019 Enterprise installation. In the following article we’ll look at the main ways to analyze performance and problems in SQL Server.
Note. Some tabs or settings may be missing in earlier versions (SQL Server 2014, 2016).