Sql server на linux mint

Установка MS SQL Server на Linux

В этой статье я научу вас устанавливать Microsoft SQL Server 2022 на Linux и мы развернем тестовую базу данных от Microsoft в операционной системе Linux.

Мы будем использовать пакетным менеджером Yum для Linux дистрибутивов: RedHat (RHEL), CentOS, Scientific Linux и DPKG (Debian Package) – система управления пакетами в Debian и дистрибутивах на его основе, например Ubuntu и набирающем популярность Astra Linux, в связи с импортозамещением. Поэтому команды я приведу для обоих пакетных менеджеров. Так же рассмотрим универсальный способ запуска через Docker.

Microsoft SQL Server — система управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Основной используемый язык запросов (диалект SQL) — Transact-SQL (T-SQL).

Для взаимодействия с СУБД MS SQL Server используются 2 основных способа:
1. Служебная программа sqlcmd
2. Microsoft SQL Server Management Studio (SSMS)

Конечно вы можете использовать привычный для вас DBeaver или DataGrip или любой другой инструмент администрирования базы данных.

  1. Выбор выпуска
  2. Запуск MS SQL Server через Docker
  3. Установка MS SQL Server на Ubuntu 20.04.6 LTS (Debian, Astra Linux)
  4. Установка MS SQL Server на Oracle Linux Server 8.7 (RedHat (RHEL), CentOS)
  5. Служебная программа sqlcmd
  6. Microsoft SQL Server Management Studio (SSMS)
  7. Работа со службой Database Engine
  8. SQL команды для подробной информации о сервере
  9. Full-Text Search
  10. Простой пример развертывания БД для Linux
  11. Развертывание тестовой БД Microsoft для Linux

Выбор выпуска

Выпуски SQL Server имеют бесплатные лицензии: Evaluation, Developer и Express.

  1. Express является бесплатной для использования редакцией. Функционал довольно ограничен, самое ощутимое ограничение экспресс версии — максимальный размер базы 10 ГБ. Эта редакция подойдет для небольших проектов, например, студенческих работ или для обучения SQL/T-SQL.
  2. Developer редакция так же как и Enterprise не имеет никаких ограничений и её можно использовать бесплатно, но она может использоваться только для разработки и тестирования приложений.
  3. Web редакция почти ничем не отличается от standard, кроме как более сильными ограничениями в функционале и соответственно более низкой стоимости лицензирования;
  4. Standard это полноценная платная редакция, но многих функций всё еще нет. Максимальный объём оперативной памяти, который сможет использовать SQL Server – 128 ГБ, также отсутствуют группы доступности AlwaysOn и другие компоненты. Standard предназначен для приложений в небольших организациях.
  5. Evaluation — ознакомительная редакция SQL Server, которая предоставляет полный функционал Enterprise и работает в течении 180 дней (может быть обновлена до полноценной версии).
  6. Enterprise включает в себя все возможные функции и компоненты, никаких ограничений нет. Корпоративная редакция обычно используется крупными корпорациями или компаниями, которым необходим функционал этой версии.
Читайте также:  Переустановка xorg astra linux

SQL Server Developer — идеальный выбор для людей, которые создают и тестируют приложения.

Запуск MS SQL Server через Docker

# Извлечь образ, при необходимости, и запустить контейнер c MS SQL Server на порту 1433 и именем контейнера mssql1 docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=strongPassword123" -p 1433:1433 --name mssql1 -d mcr.microsoft.com/mssql/server:2022-latest # Вывести список всех контейнеров docker ps -a # Служебная программа sqlcmd позволяет вводить инструкции Transact-SQL docker exec -it mssql1 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P strongPassword123 # Удалить созданный вами контейнер docker rm mssql1 -f

Установка MS SQL Server на Ubuntu 20.04.6 LTS (Debian, Astra Linux)

wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2022.list)" sudo apt-get update sudo apt-get install -y mssql-server sudo /opt/mssql/bin/mssql-conf setup systemctl status mssql-server
# Восстановление настроек по умолчанию sudo ufw default deny incoming sudo ufw default allow outgoing # Разрешаем подключение sudo ufw allow 1433 # активировать UFW sudo ufw enable # Дополнительно: # диапазоны портов и протокол sudo ufw allow 6000:6007/tcp sudo ufw allow 6000:6007/udp

Установка MS SQL Server на Oracle Linux Server 8.7 (RedHat (RHEL), CentOS)

sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo sudo yum install -y mssql-server sudo /opt/mssql/bin/mssql-conf setup systemctl status mssql-server
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent sudo firewall-cmd --reload

Служебная программа sqlcmd

Для работы программы sqlcmd требуется установка ODBC Driver for SQL Server, подводным камнем тут является то, что нам нужна именно 17 версия для работы с Microsoft SQL Server 2022 (RTM-CU4) (KB5026717).

1) Для работы из-под Windows 10 из Windows Terminal (PowerShell)

sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo sudo yum remove unixODBC-utf16 unixODBC-utf16-devel sudo yum install -y mssql-tools unixODBC-devel echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc source ~/.bashrc
sudo apt-get update sudo apt install curl curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list sudo apt-get update sudo apt-get install mssql-tools unixodbc-dev sudo apt-get update sudo apt-get install mssql-tools echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc source ~/.bashrc
sqlcmd -S localhost -U sa -P strongPassword123 # Выход из приглашения команды sqlcmd QUIT

Microsoft SQL Server Management Studio (SSMS)

SQL Server Management Studio (SSMS) — это интегрированная среда для управления любой инфраструктурой SQL.

Читайте также:  Linux set file as executable

Работа со службой Database Engine

#Проверьте состояние службы Database Engine sudo systemctl status mssql-server #Остановить, запустить или перезапустить службу Database Engine sudo systemctl stop mssql-server sudo systemctl start mssql-server sudo systemctl restart mssql-server

SQL команды для подробной информации о сервере

SELECT Name from sys.databases; SELECT @@VERSION as Version SELECT SERVERPROPERTY('ServerName') as 'Container ID' SELECT SERVERPROPERTY('Edition') as Edition SELECT CURRENT_USER; GO

Full-Text Search on Linux

Полнотекстовый поиск позволяет выполнять полнотекстовые запросы к символьным данным в таблицах SQL Server. Это позволит нам выполнить загрузку данных из .csv файлов в БД.

sudo yum install -y mssql-server-fts sudo yum check-update sudo yum update mssql-server-fts
sudo apt-get update sudo apt-get install -y mssql-server-fts

Простой пример развертывания БД для Linux

Это упрощенный пример создания тестовой базы данных от Microsoft.

Этот пример нужен для самостоятельной корректировки SQL-скриптов создания тестовой БД Microsoft на Linux.

Воспроизвести работу примера:

  1. Установить Full-Text Search
  2. Создать sql-скрипты описанные ниже
  3. Перенести SQL файлы на сервер (например через MobaXTerm)
  4. Настроить права доступа для пользователя и группы
  5. Выполнить скрипты в порядке их следования

Команды Linux (для новичков):

# Создаем папку TestMe в директории вашего пользователя - мой пользователь: admin # /home/admin/ mkdir TestMe # Загружаем файлы на сервер через ftp встроенный в MobaXTerm # просто выделив их и перенеся в директорию вашего пользователя # Переключаемся на root (суперпользователя) sudo su cd /var mkdir sqlbackup cd sqlbackup mkdir TestMe # переносим файлы в директорию TestMe - cp /home/admin/TestMe/* /var/sqlbackup/TestMe chown mssql -R sqlbackup/ chgrp mssql -R sqlbackup/

Запуск sql скриптов через sqlcmd при подключении к удаленному серверу по SSH через MobaXTerm

sqlcmd -S localhost -U SA -P strongPassword123 -i /var/sqlbackup/TestMe/ddl.sql

Сами тестовые данные — AddressType.csv

1 Billing 2008-04-30 00:00:00 2 Home 2008-04-30 00:00:00 3 Main Office 2008-04-30 00:00:00 4 Primary 2008-04-30 00:00:00 5 Shipping 2008-04-30 00:00:00 6 Archive 2008-04-30 00:00:00

Удаляет БД, если ранее она была создана

Вставляет в таблицу данные

Делает выборку данных из таблицы

Удаляет все записи из таблицы

:setvar SqlSamplesSourceDataPath "/var/sqlbackup/TestMe/data/" :setvar DatabaseName "TestMe" IF '$(SqlSamplesSourceDataPath)' IS NULL OR '$(SqlSamplesSourceDataPath)' = '' BEGIN RAISERROR(N'The variable SqlSamplesSourceDataPath must be defined.', 16, 127) WITH NOWAIT RETURN END; SET NOCOUNT OFF; GO PRINT CONVERT(varchar(1000), @@VERSION); GO PRINT ''; PRINT 'Started - ' + CONVERT(varchar, GETDATE(), 121); GO USE [master]; GO -- **************************************** -- Drop Database -- **************************************** PRINT ''; PRINT '*** Dropping Database'; GO IF EXISTS (SELECT [name] FROM [master].[sys].[databases] WHERE [name] = N'$(DatabaseName)') DROP DATABASE $(DatabaseName); -- If the database has any other open connections close the network connection. IF @@ERROR = 3702 RAISERROR('$(DatabaseName) database cannot be dropped because there are still other open connections', 127, 127) WITH NOWAIT, LOG; GO -- **************************************** -- Create Database -- **************************************** PRINT ''; PRINT '*** Creating Database'; GO CREATE DATABASE $(DatabaseName); GO PRINT ''; PRINT '*** Checking for $(DatabaseName) Database'; /* CHECK FOR DATABASE IF IT DOESN'T EXISTS, DO NOT RUN THE REST OF THE SCRIPT */ IF NOT EXISTS (SELECT TOP 1 1 FROM sys.databases WHERE name = N'$(DatabaseName)') BEGIN PRINT '*******************************************************************************************************************************************************************' +char(10)+'********$(DatabaseName) Database does not exist. Make sure that the script is being run in SQLCMD mode and that the variables have been correctly set.*********' +char(10)+'*******************************************************************************************************************************************************************'; SET NOEXEC ON; END GO ALTER DATABASE $(DatabaseName) SET RECOVERY SIMPLE, ANSI_NULLS ON, ANSI_PADDING ON, ANSI_WARNINGS ON, ARITHABORT ON, CONCAT_NULL_YIELDS_NULL ON, QUOTED_IDENTIFIER ON, NUMERIC_ROUNDABORT OFF, PAGE_VERIFY CHECKSUM, ALLOW_SNAPSHOT_ISOLATION OFF; GO USE $(DatabaseName); GO CREATE TYPE [Name] FROM nvarchar(50) NULL; GO CREATE TABLE [Person].[AddressType]( [AddressTypeID] [int] IDENTITY (1, 1) NOT NULL, [Name] [Name] NOT NULL, [rowguid] uniqueidentifier ROWGUIDCOL NOT NULL CONSTRAINT [DF_AddressType_rowguid] DEFAULT (NEWID()), [ModifiedDate] [datetime] NOT NULL CONSTRAINT [DF_AddressType_ModifiedDate] DEFAULT (GETDATE()) ) ON [PRIMARY]; GO 
USE [TestMe]; GO BULK INSERT [Person].[AddressType] FROM '/var/sqlbackup/AdventureWorks/AddressType.csv' WITH ( CHECK_CONSTRAINTS, DATAFILETYPE = 'char', FIELDTERMINATOR= '\t', ROWTERMINATOR = '\n', KEEPIDENTITY, TABLOCK ); GO SELECT * FROM [PERSON].[AddressType]; GO 
USE [TestMe]; GO SELECT * FROM [PERSON].[AddressType]; GO
USE [TestMe]; GO DELETE FROM [Person].[AddressType]; GO SELECT * FROM [Person].[AddressType]; GO

Развертывание тестовой БД Microsoft для Linux

Создадим на сервере Linux директорию /var/sqlbackup/AdventureWorks

Читайте также:  Linux где мой компьютер

Из него скачиваем zip архив с данными и sql скриптом для расскатки БД.

Отредактируем файл instawdb.sql

. :setvar SqlSamplesSourceDataPath "/var/sqlbackup/AdventureWorks/" . :setvar DatabaseName "AdventureWorks"

Удаляем все строчки с: CODEPAGE=’ACP’, в instawdb.sql

ACP это ANSI, а Linux использует UTF-8, а UTF-8 это расширенный ANSI, а кодовые страницы в Linux не используются, поэтому убрав строки всё будет работать

После переносим .csv данные и единственный sql-скрипт в /var/sqlbackup/AdventureWorks на нашем сервере Linux

sqlcmd -S localhost -U SA -P strongPassword123 -i /var/sqlbackup/AdventureWorks/instawdb.sql

Теперь у вас есть тестовая база данных =)

Источник

Оцените статью
Adblock
detector