Skip to main content

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