×

БД формата MS SQL

 

Общая информация

По умолчанию, в качестве СУБД используется Firebird (входит в комплект полного дистрибутива).
При необходимости использования сервера баз данных MS SQL его требуется установить дополнительно, руководствуясь стандартной инструкцией по установке для MS SQL.
Данная инструкция используется для настройки проекта.
 

Лицензирование

Использование БД формата MS SQL в SCADA Энтек/МЭ является опцией. Проверьте, что у вас в информации о регистрации есть строчка: MS SQL: да. На клиентских АРМ добавление опции не требуется.
 
Рисунок 1. Информация о регистрации.
 

Использование MS SQL Server

Инструкция по установке MS SQL Server приведена в Справочной системе и в данном быстром старте не расписана.
Вместе с MS SQL Server полезно установить SQL Server Management Studio, это упростит администрирование БД MS SQL. После установки MS SQL Server откройте модуль «Управление компьютером» и убедитесь, что службы MS SQL работают.
 
Рисунок 2. Модуль «Управление компьютером».
После чего можно переходить к проекту.
 

БД типового проекта

В проектах SCADA Энтек присутствуют несколько БД:
·     БД пользователей (Для всех проектов)
·     БД событий (Для всех проектов)
·     БД модуля «Справочники» (не обязательно для проектов телемеханики)
·     БД АСКУЭ (не требуется для проектов телемеханики)
·     Любые другие БД, созданные пользователем
 
!!! БД пользователей (users.fdb) на текущий момент может быть только в формате Firebird, перевести её на MS SQL нельзя (т.е. полностью уйти от Firebird на текущий момент не получится). Остальные БД могут быть в формате MS SQL.  !!!
 
БД формата MS SQL можно создать при создании нового проекта, либо перейти на формат MS SQL позже, импортируя в новые БД накопленные данные.
 

Формирование БД MS SQL при создании нового проекта

Мастер создания нового проекта предложит создать несколько БД. При этом, все базы данных можно сразу создать в нужном формате - MS SQL.
Исключение БД пользователей – она (на момент написания этого документа) может быть только в формате Firebird.
 
Рисунок 3. Шаг 3 создания проекта – Создание/подключение БД пользователей.
 
При создании БД событий – выбираем формат MS SQL
 
Рисунок 4. Создание БД событий.
 
В данном случае нам необходимо обратить внимание на следующие настройки:
1.     Выставляем тип СУБД «MS SQL»
2.     Снимаем галку «Из проекта»
3.     В поле содержащим название станции (по умолчанию «Новая станция») прописываем название вашего MS SQL сервера. Его можно посмотреть в модуле Server Management Studio. В моём случае, это «ENERGORES-KAV». Иногда достаточно прописать IP сервера.
4.     В поле «Имя БД» пропишите предполагаемое имя создаваемой БД. В моём случае это DBEvents
5.     Оставьте галку «Аутентификация windows.
6.     В поле «Папка для файлов БД» выдерете папку для хранения создаваемой БД.
Успешный переход на следующую страничку говорит об успехе создания БД.
Таким же образом создаём остальные БД:
 
Рисунок 5. Этап создания БД модуля «Справочники»
 
Рисунок 6. Этап создания БД АСКУЭ (создаётся по необходимости)
 
Проверяем папку, в которую создавали все базы данных:
 
Рисунок 7. Визуальный контроль наличия созданных БД.
Видим, что всё прошло успешно. Можно пользоваться.
 

Переход на БД формата MS SQL в уже существующем проекте

В этом случае поступаем следующим образом:
·     БД модуля «Справочники» (DISPATCHER.FDB) сконвертируем на формат MS SQL.
·     БД АСКУЭ сконвертировать в другой формат нельзя, поэтому создадим новую БД в нужном формате и импортируем в неё данные из БД АСКУЭ формата Firebird.
·     События перенести в новый формат нельзя, эту БД необходимо создать заново, в нужном формате.
Подробно.
Важно!!! Перед началом работы необходимо выгрузить все запущенные сервера и закрыть все открытые программные модули данного проекта!!!
 

БД АСКУЭ

Создадим новую БД и перенесём в неё данные.
Заходим в модуль «История» и добавляем новую БД:
 
Рисунок 8.
Выберем тип: «БД АСКУЭ»
 
Рисунок 9.
 
В принципе, настройки будут практически идентичны описанным выше.
1.     Выставляем тип СУБД «MS SQL»
2.     Снимаем галку «Из проекта»
3.     В поле содержащим название станции (по умолчанию «Новая станция») прописываем название вашего MS SQL сервера. Его можно посмотреть в модуле Server Management Studio. В моём случае, это «ENERGORES-KAV».
4.     В поле «Имя БД» пропишите предполагаемое имя создаваемой БД.
5.     Оставьте галку «Аутентификация windows, либо пропишите логин и пароль пользователя MS SQL сервера.
6.     Нажмите кнопку «создать БД». При этом появится окно, в котором необходимо прописать путь к папке, где новая БД будет храниться.
При успешном создании БД появится информационное сообщение (см. рисунок 10)
 
Рисунок 10.
 
 
Для новой БД можно выставить свойство «БД по умолчанию». В этом случае к данной БД будут привязываться все новые объекты, если пользователь не укает другую БД в настройках АСКУЭ объекта.
 
Рисунок 11.
Важно!!! Если в настройках АСКУЭ уже существующих объектов выбрана не БД АСКУЭ «по умолчанию», а какая-нибудь конкретная, переведите эти объекты на новую БД, или выберете строчку «БД АСКУЭ по умолчанию», иначе все показания, которые будут собираться, будут помещаться в старую БД.
Не забудьте про настройки ограничения срока хранения данных!
 
Рисунок 12. Выбор БД АСКУЭ для конкретного объекта.
 
Теперь произведём импорт данных из БД Firebird
Выберем новую MS SQL БД, нажмём на ней правой кнопкой мыши и выберем «Импорт данных»
 
Рисунок 13. Импорт данных.
Укажем путь к БД, из которой собираемся импортировать данные:
 
Рисунок 14. Настройки импорта данных.
При успешном импорте получаем информационное сообщение:
 
Рисунок 15. Информирование после импорта.
 

БД Событий

Переходим в модуль «События», переводим его в режим настройки (F6)
Кликаем правой кнопкой мыши, выбираем пункт «Добавить БД».
 
Рисунок 16. Добавление новой БД.
Все настройки аналогичны добавлению БД АСКУЭ:
 
Рисунок 17. Выбор типа СУБД.
В случае успеха получаем информационное сообщение:
 
Рисунок 18. Информирование о создании БД.
После создания БД нажмите кнопку «Проверить соединение». Убедитесь что соединение установлено.
 

БД модуля «Справочники»

Из «Интегратора» открываем модуль «Справочники», переводим его в режим настройки (кнопка F6).
В меню «Правка» выбираем пункт «Конвертировать…»
 
Рисунок 19.
Откроется окно конвертации БД.
Настройки идентичны:
1.     Убираем галку «Из проекта» и указываем имя сервера MS SQL
2.     Пропишем имя новой БД
3.     Укажем путь хранения
 
Рисунок 20.
 
При успешной конвертации получаем информационное сообщение:
 
Рисунок 21. Информирование о успехе конвертации данных.
Проверим что все БД «на месте»:
 
Рисунок 22. Список файлов.
 
Настройка закончена.
 

Сетевые проекты

 
Для доступа к данным с АРМ необходимо выполнить следующие действия:
1.     Установить на АРМ клиентскую часть – Microsoft SQL Server 2008 Native Client. Обязательное условие для всех версий MS SQL сервера.
2.     Настроить сетевую конфигурацию MS SQL Server и добавить разрешающие правила в брандмауэре АРМ и сервера.
3.     Настроить права пользователей MS SQL Server.
 

Настройки

1.     Запустить утилиту «Диспетчер конфигурации SQL Server» (SQL Server Configuration Manager)
Поскольку диспетчер конфигурации SQL Server является оснасткой консоли управления (Microsoft), а не изолированной программой, при работе в более новых версиях Windows диспетчер конфигурации SQL Server не отображается как приложение.
Диспетчер конфигурации SQL Server устанавливается вместе с SQL Server и представляет собой оснастку консоли управления (ММС), которую можно открыть из меню "Пуск" или добавить в любой экран консоли управления Microsoft. Microsoft Консоль управления (mmc.exe) использует файл SQLServerManager<version>.msc (например, SQLServerManager13.msc для SQL Server 2016 (13.x);), чтобы открыть диспетчер конфигурации.
Версия
Путь для запуска
SQL Server 2019
C:\Windows\SysWOW64\SQLServerManager15.msc
SQL Server 2017
C:\Windows\SysWOW64\SQLServerManager14.msc
SQL Server 2016
C:\Windows\SysWOW64\SQLServerManager13.msc
SQL Server 2014 (12.x)
C:\Windows\SysWOW64\SQLServerManager12.msc
SQL Server 2012 (11.x)
C:\Windows\SysWOW64\SQLServerManager11.msc
 
В разделе «Сетевая конфигурация SQL Server» → «Протоколы для …» нажать правой кнопкой мыши на строке «TCP/IP» и в контекстном меню выбрать пункт «Свойства»:
 
Рисунок 23.
 
2.     На закладке «Протокол» установить параметр «Включено» = «Да», а на закладке «IP-адреса» в разделе «IPAll» параметр «TCP-порт» = «1433». Затем нажать кнопку «ОК»:
 
Рисунок 24.
 
Рисунок 25.
 
Подробную информацию о портах используемых MS SQL сервером и настройке брандмауэра можно почитать тут:
 
 
3.     В разделе «Службы SQL Server» нажать правой кнопкой мыши на строке «SQL Server (…)» и в контекстном меню выбрать пункт «Перезапустить» (этот пункт можно пропустить, если Вы перезагрузите компьютер после завершения остальных настроек):
 
Рисунок 26.
4.     Если на компьютере установлен какой-либо FireWall (брандмауэр), то в нем необходимо разрешить входящие соединения по протоколу TCP/IP на порт 1433 (для подключения к SQL Server с других компьютеров), а также по протоколу UDP на порт 1434 (для того, чтобы другие компьютеры могли обнаруживать данный экземпляр SQL Server). В стандартном «Брандмауэре Windows» (Панель управления → Брандмауэр Windows) для этого необходимо создать два правила:
 
Рисунок 27.
 
Рисунок 28.
 
За помощью в создании правил обратитесь к своему системному администратору.
 
5.     После завершения установки и настройки рекомендуется перезагрузить компьютер.
ВНИМАНИЕ! При установке SQL Server на НЕ русскоязычную ОС Windows необходимо в «Control Panel» → «Regional and Language Options» на закладке «Advanced» поставить язык «Russian» в параметре «Language for non-Unicode programs», затем перезагрузить компьютер.
 

Пользователи и права доступа к БД MS SQL

По соображениям безопасности, зачастую, для доступа к БД Аутентификация Windows не используется. На сервере MS SQL через SQL Management Studio создаётся новый пользователь и производится настройка свойств.
 
Рисунок 29.
 
Для создания пользователя с аутентификацией SQL необходимо ввести имя пользователя в графе Имя пользователя, указать пароль и подтверждение пароля.
 
Рисунок 30.
 
Настроим роли:
 
Рисунок 31.
 
На странице Сопоставление пользователей отмечаются галочками базы данных, для которых установлен доступ для данного пользователя и членство в роли в базе данных.
Настроим для данного пользователя схему доступа к требуемому списку БД – db_owner (владелец):
 
Рисунок 32.
Проверим, что разрешение на подключение есть:
 
Рисунок 33.
 
В свойствах БД убедитесь, что выбранный пользователь имеет требуемую роль:
 
Рисунок 34.
После создания пользователя MS SQL переходим к настройкам доступа к БД в модулях «События» и «История». Снимем галочку «Аутентификация Windows», пропишем актуальную информацию в полях «Имя пользователя» и «Пароль».
БД АСКУЭ и оперативные БД:
 
Рисунок 35.
 
БД «Событий»:
 
Рисунок 36.
БД модуля «Справочники»:
В настройках доступа к БД модуля «Справочники» тоже необходимо прописать аутентификацию по пользователю SQL. Поскольку модуль «Справочники» не имеет визуального окна для такой настройки, необходимо отредактировать файл Dispatcher.ini расположенный в папке \Dispatcher\ из вашего проекта, внеся изменение в строчку: OSAuthent=0 (значение =1 это Windows аутентификация).
 
Рисунок 37.
Можно поступить по-другому – при потере доступа к БД модуль «Справочники» сам выведет экранную форму, в которой можно выбрать определённую БД и настроить к ней доступ:
 
Рисунок 38.
 

Бэкапы БД MS SQL редакции Express

При использовании MS SQL Server редакции Express, которая является бесплатной, важно понимать, что она имеет ряд ограничений. Кроме того, что размер базы данных при использовании MS SQL Server Express не может превышать 10 Гб, в составе этой редакции СУБД отсутствует SQL Server Agent, который позволяет создавать планы обслуживания баз данных для регулярного автоматического выполнения. 
Для создания резервной копии в ручном режиме запускаем Microsoft SQL Server Management Studio.
Выбираем нужную нам БД, кликаем по ней правой кнопкой мыши:
Задачи – Создать резервную копию
 
Рисунок39.
 
В открывшемся диалоговом окне нужно убедиться, что тип резервной копии стоит «Полная» (Full), при необходимости можно задать имя и описание, а также указать назначение резервной копии. По умолчанию выбран путь на жестком диске компьютера в папку Backup основного расположения баз SQL-сервера. Для того чтобы изменить место размещения копии, сначала надо нажать «Удалить» (Remove), чтобы удалить существующее назначение, а затем «Добавить» (Add…) для добавления нового.
 
Рисунок 40.
Рекомендуется установить флаг «Проверить резервную копию после завершения»:
 
Рисунок 41.
Нажимаем кнопку ОК и дожидаемся сообщения о окончании задания.
 
Рисунок 42.
 
Подробное описание процесса доступно по этой ссылке:
Информация по автоматизации создания резервных копий SQL Server баз данных в SQL Server Express доступна на этой странице:
 
Ниже приводится пример автоматизации процесса создания бэкапа.
 
После настройки ручного бэкапа (Рисунок 40), до нажатия кнопки ОК нажимаем на кнопку Скрипт в верхней части формы. В результате в окне запросов откроется скрипт по созданию резервной копии с учетом произведенных на форме настроек:
 
Рисунок 43.
 
Текст для справки:
 
BACKUP DATABASE [ASCUE] TO  DISK = N'D:\Backup\ASCUE.bak' WITH NOFORMAT, NOINIT,  NAME = N'ASCUE-Полная База данных Резервное копирование', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO
declare @backupSetId as int
select @backupSetId = position from msdb..backupset where database_name=N'ASCUE' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'ASCUE' )
if @backupSetId is null begin raiserror(N'Ошибка верификации. Сведения о резервном копировании для базы данных "ASCUE" не найдены.', 16, 1) end
RESTORE VERIFYONLY FROM  DISK = N'D:\Backup\ASCUE.bak' WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND
GO
 
В скрипт можно внести корректировки, на пример, добавляющие дату-время к имени файла.
Полученный скрипт нужно сохранить в файл с расширением sql с помощью команды Файл — Сохранить как:
 
Рисунок 44.
 
Рисунок 45.
Далее с помощью обычного блокнота нужно создать файл cmd следующего содержания:
"D:\Backup\log.txt"
sqlcmd -S PC-11575\SQLEXPRESS -i D:\Backup\SQLQuery4.sql -o "D:\Backup\log.txt"
exit
 
Здесь:
·     PC-11575\SQLEXPRESS — путь к экземпляру сервера СУБД в формате ИмяСервера\ИмяЭкземпляра.
·     SQLQuery4.sql— имя файла, сохраненного на предыдущем шаге
·     D:\Backup\log.txt — в этот файл будет сохраняться журнал сообщений при выполнении резервного копирования. В случае возникновения ошибки, её можно будет увидеть в этом файле.
Внимание!!! В SQL Server 2014 и более низких версиях утилита sqlcmd отправляется в составе продукта. Начиная с SQL Server 2016 года, sqlcmd предлагается в качестве отдельной загрузки.
Проверяем работу созданного файла: кликаем по нему 2 раза и через некоторое время в каталоге должен появиться файл бэкапа. Если появился — двигаемся дальше. Если нет — нужно смотреть какие ошибки содержаться в log.txt и устранить их.
Далее переходим в планировщик Windows. Для этого можно воспользоваться сочетанием клавиш Win + R (выполнить) и в появившемся окне ввести taskschd.msc
 
Рисунок 46.
 
В открывшемся окне переходим в меню Действия — Создать задачу и указываем имя задачи:
 
Рисунок 47.
 
На закладке Триггеры настраиваем с какой периодичностью нужно выполнять задачу: (в примере еженедельный запуск по субботам)
 
Рисунок 48.
 
На заключительном этапе необходимо указать действие нашего задания, для этого необходимо перейти на складку «Действия» и нажать кнопку «Создать».
 
Рисунок 49.
 
В данном примере действием будет запуск файла SQLQuery.cmd, который мы создавали ранее.
На этом настройка автоматического резервного копирования базы данных для MS SQL Server Express завершена.
 

Полезные запросы в MS SQL

 
Select @@ServerName ServerName, Host_name() HostName
–– выводит имя хоста и имя инстанса;
SELECT @@VERSION
–– выводит информацию о версии SQL сервера и версии операционной системы;
SELECT @@SERVICENAME AS SERVICENAME;
–– выводит имя сервиса;
SELECT SERVERPROPERTY ('productversion'),
SERVERPROPERTY ('edition'),
SERVERPROPERTY ('productlevel')
– В отличие от SELECT @@version функция SERVERPROPERTY возвращает только конкретные свойства, относящиеся к версии.
 
Справочная система создана в Dr.Explain