3. Восстановление базы данных
1. Создаём каталог backup внутри контейнера (находясь вне контейнера)
sudo docker exec -it sql1 mkdir -p /var/opt/mssql/backup
2. Бэкап БД ставим в каталог /home на основной системе. И выполняем копирование бэкапа внутрь контейнера в созданный каталог /var/opt/mssql/backup/
sudo docker cp /home/VSM_School-sample_Web_2004.06.28.bak sql1:/var/opt/mssql/backup/VSM_School-sample_Web_2004.06.28.bak
3. Заходим внутрь контейнера
sudo docker exec -it sql1 "bash"
4. Проверяем, есть ли скопированный бэкап
ls /var/opt/mssql/backup
5. Открываем интерпретатор T-SQL
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Linux123"
/////////////////////////////////////////////////////////////////////////////////////////////////////////
5а. Перед командами восстановления БД желательно проверить соответствие
логических имён из файла бэкапа имени базы данных.
Делается это такой командой (в данном случае извне контейнера):
sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Linux123" -Q "RESTORE FILELISTONLY FROM DISK = N'/home/VSM_School-sample_Web_2004.06.28.bak';"
/////////////////////////////////////////////////////////////////////////////////////////////////////////
6. И даём команды для восстановления БД
USE [master]
RESTORE DATABASE [VSM_School-sample_Web] FROM DISK = N'/var/opt/mssql/backup/VSM_School-sample_Web_2004.06.28.bak'
WITH FILE = 1,
MOVE N'VSM_School-sample_Web' TO N'/var/opt/mssql/data/ExtraSql/VSM_School-sample_Web.mdf',
MOVE N'VSM_School-sample_Web_MSGS' TO N'/var/opt/mssql/data/ExtraSql/VSM_School-sample_Web.ndf',
MOVE N'VSM_School-sample_Web_1' TO N'/var/opt/mssql/log/ExtraSql/VSM_School-sample_Web_1.ldf',
NOUNLOAD,
STATS = 5;
GO
ВНИМАНИЕ!! После этого команда exit для выхода из интерпретатора может не сработать (а может и сработать). Придётся закрыть терминал или сеанс SSH, и снова открыть.
После повторного открытия в следующие разы выход из интерпретатора SQL с помощью команды exit будет нормальным.
7. Заходим в контейнер
sudo docker exec -it sql1 "bash"
8. Заходим в интерпретатор SQL:
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Linux123"
9. Теперь смотрим, правильно ли восстановилась база данных
- Просмотр списка баз данных:
SELECT name FROM sys.databases;
GO
..................................................
Будет так:
name
----------------------------
master
tempdb
model
msdb
VSM_School-sample_Web
(5 rows affected)
...................................................
- Переключение на вашу восстановленную базу данных:
USE [VSM_School-sample_Web];
GO
...................................................
Будет так:
Changed database context to 'VSM_School-sample_Web'.
...................................................
- Просмотр списка таблиц в вашей базе данных:
SELECT name FROM sys.tables;
GO
.................................................
Будет примерно так:
name
--------------------------------------------------------------------------------------------------------------------------------
PersPhysical
RoleUserRelations
Files
WebPages
ConfigurationsTree
WebPageResources
CourseVersionConfigurationsTree
TableFiles
Enums
Qualifiers
RegisteredAssemblies
Stat
CourseConfigurationAccess
Talks
TypeRelations
Quals
TalkMembers
QualRels
Entities
AssembliesReferences
GlobalSettings
Messages
Meta
PluginLog
Tables
Permissions
Relations
Qualifiers
MetaGroup
MessageFiles
PrincipalSettings
Entities
Docs
MessageConfigurationsTree
Timers
EntityStates
Quals
Sites
RelationStates
Enums
Rels
SiteUsers /opt/mssql-tools/bin/sqlcmd -S localhost -U wcf -P "Linux123"
TalkMemberMessages
Strs
SitePlugins
Addresses
Territories
UserDevices
Captcha
Groups
Objects
Fields
VersionFiles
VersionConfigurationsTree
SmallInts
GroupTalk
Roles
SocialNetworksUsers
Users
(59 rows affected)
.........................................................
- Выполнение простого запроса к вашей базе данных (например, выборка первых 10 строк из таблицы):
SELECT TOP 10 * FROM Enums;
GO
.........................................................
Будет что-то типа этого:
Enum Id Code Alias Name Memo From To Flag0 Flag1 Flag2 Flag3 Flag4 Flag5 Flag6 Flag7 ImportSrc ImportId ImportCode Imports Header Enum_Code
---- --- ------------------------------- --------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------ ------ ----- ----- ----- ----- ----- ----- ----- ----- --------- ----------- ------------------------------------ ------- ------ ---------
0 0 ТПД Типы данных Типы данных NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 255 0 NULL
0 36 uniqueidentifier uniqueidentifier uniqueidentifier
И ТАК ДАЛЕЕ....
...............................................................
==================================
10. Создание аккаунта wcf (находясь в режиме аккаунта SA)
CREATE LOGIN [wcf] WITH PASSWORD = 'Linux123', DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[русский], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
11. Проверить новую учётную запись wcf (для этого надо выйти из интерпретатора SQL)
/opt/mssql-tools/bin/sqlcmd -S localhost -U wcf -P "Linux123"
Если появилось приглашение ко вводу SQL-команд, значит всё нормально.
12. Создание админского аккаунта для веб-интерфейса НБИКС. Зайти в интерпретатор под учёткой SA
USE [VSM_School-sample_Web];
GO
update Tech.Users set Password = 0x35666132383565316265626530613636 where Id = database_principal_id('администратор')
GO
Либо так:
USE [VSM_School-sample_Web];
GO
DECLARE @NewPassword NVARCHAR(100) = 'ВашПароль';
UPDATE Tech.Users SET Password = @NewPassword WHERE Id = database_principal_id('администратор');
GO