MS SQL Server 2005/2008 |
Для перемещения базы данных на другой сервер
необходимо выполнить следующие действия:1) Если новый другом компьютере, то необходимо:
расположен на
установить на новом сервере БД вспомогательную службу napsrv.exe системы (см. п. Обновление вспомогательной службы Галактики ERP). При использовании NTLM авторизации в процессе настройки параметров вспомогательной службы с помощью galconf.exe необходимо установить требуемые параметры авторизации (см. п.п. ИСПОЛЬЗОВАНИЕ СРЕДСТВ WINDOWS NT ДЛЯ АВТОРИЗАЦИИ ПОЛЬЗОВАТЕЛЕЙ ПРИ РАБОТЕ В ДВУХУРОВНЕВОЙ АРХИТЕКТУРЕ , Настройка вспомогательной службы napsrv.exe).
Для этого предварительно на новый сервер БД нужно скопировать каталог \DB_INST из серверной части системы.
Примечание: Установка вспомогательной службы является обязательным этапом, так как в процессе ее установки в базе данных master формируются необходимые внешние хранимые процедуры.
Откорректировать файл csetup.ini, расположенный в папке \SETUP серверной части системы , добавив в него следующие параметры:
[Main] DB_INSTALLED=<имя восстанавливаемой базы данных>; DBDriver=MS70DRV.DLL [MSSqlServer] DB_<имя восстанавливаемой базы данных>= <имя экземпляра нового SQL Server или сетевое имя компьютера для default -экземпляра> IN_<имя экземпляра нового SQL Server или сетевое имя компьютера для default -экземпляра> = <значение>
где <значение> имеет формат:
<протокол>:<адрес_сервиса_для_протокола>[<порт>],
где
<протокол> должен соответствовать протоколу сервиса (см. п. Возможные варианты протоколов). По умолчанию ncacn_ip_tcp
<адрес_сервиса_для_протокола> должен быть записан в формате, соответствующем протоколу (см. п. Возможные варианты сетевых адресов);
<порт> должен быть записан в формате соответствующем выбранному протоколу (см. п. Возможные варианты портов) и соответствовать порту сервиса. По умолчанию 1997
Значение данного параметра определяется с помощью по полю Конфигурация клиента окна =Конфигурация вспомогательной службы= (см. п. Порядок настройки службы).
Если имя восстанавливаемой БД такое же, как и имя исходной БД, то требуемое значение параметра Main.DB_INSTALLED в файле csetup.ini уже существует. В этом случае для уже существующего параметра MSSQLServer.DB_<имя восстанавливаемой базы данных> нужно изменить значение на новое.
Откорректировать файл install.ini, расположенный в папке \EXE серверной части системы , изменив в нем следующие параметры:
[Main] DBDriver=MS70DRV.DLL [Bases] Base1=<имя восстанавливаемой базы данных> Path1= <значение>
где <значение> совпадает со значением параметра IN_<сетевое имя компьютера, на котором установлен сервер БД> файла csetup.ini (см. выше).
BaseCount=1
Если имя восстанавливаемой БД такое же, как и имя исходной БД, то в файле install.ini достаточно изменить только значение параметра Bases.Path1.
Откорректировать настройки клиентских частей системы (альтернативой является переустановка клиентских частей):
- В конфигурационном файле (galnet.cfg) клиентской части откорректировать параметр SQLDriver.SQLServer, задав в нем настройки для нового сервера БД.
- Откорректировать в ODBC Data Sources описание System DSN для восстанавливаемой БД (изменить имя сервера на новое).
Примечание: считается, что при восстановлении базы данных ее имя не изменится. В противном случае дополнительно необходимо откорректировать параметр DataBase.DataBaseName файла galnet.cfg и изменить имя БД в ODBC Data Sources (System DSN) на рабочих станциях.
На рабочей станции администратора аналогично выполнить необходимые настройки для комплекса
.2) Восстановить базу данных на новом сервере из резервной копии ( ), используя средства .
При задании параметров восстановления базы данных проверьте правильность задания местонахождения файлов базы данных (страница Options окна =Restore database=) и при необходимости измените пути.
3) Создать средствами Установка базы данных). Если для пользователя-владельца используется пустой пароль (SQL Server Authentication), то при создании логина необходимо снять флаг Enforce password policy.
логин MS SQL Server для пользователя, который должен являться владельцем БД системы . Обычно им является пользователь GALAXYDBOWNER (см. п.4) Сменить владельца восстановленной БД на требуемое имя, например, выполнив запрос:
sp_changedbowner 'GALAXYDBOWNER'
5) Отключить подсистемы прав доступа (модуль
) и журнализации (модуль ), выполнив в в восстановленной БД скрипт:update x$journalconfig set typejournal=0 update abonents set protecton=0 from x$journalconfig where abonents.officeno=x$journalconfig.officeno
6) Создать с помощью приведенного ниже запроса нового, заведомо не существующего в восстановленной БД, пользователя. Далее по тексту будем обозначать его как <NEWUSER>. Запрос выполняется средствами в восстановленной БД и создает пользователя с правами администратора.
insert into x$users (xu$loginname,xu$type,xu$useroffice) values ('NEWUSER',1,<номер офиса>);
При использовании NTLM авторизации для создания нового пользователя в восстановленной БД необходимо выполнить следующие шаги:
Создать в ОС Windows сервера БД пользователя NEWUSER, включив его в группу администраторов;
Выполнить запрос:
insert into x$users (xu$loginname,xu$type,xu$useroffice) values ('<имя сервера БД>\NEWUSER',1,<номер офиса>);
7) Войти в комплекс NEWUSER>. Запуск в этом режиме может быть выполнен с использованием параметров командной строки /u: и /#user:, например:
под пользователем. <start x:\support\exe\support.exe /u:NEWUSER /#user:NEWUSER
При использовании NTLM авторизации вход в комплекс Support необходимо выполнять либо с консоли сервера БД, предварительно загрузив ОС сервера от имени пользователя <имя сервера БД>\NEWUSER, либо с использованием удаленного рабочего стола сервера, выполнив соединение от имени пользователя <имя сервера БД>\NEWUSER. Параметы командной строки /u: и /#user: при этом указывать не нужно, т.к. они в режиме NTLM Security игнорируются.
Перед запуском комплекса Support необходимо обеспечить права доступа нового пользователя к каталогу обмена сервера аппаратного ключа и домашнему каталогу комплекса Support.
Если используется БД с настроенной филиальностью, то при входе в комплекс необходимо в окне =Выбор текущих филиалов= выбрать любой из имеющихся филиалов.
Средствами модуля x$users в dbf и выйти из комплекса .
экспортировать таблицу8) Для обеспечения возможности выполнения шага 9) необходимо заблокировать триггер x$users_d таблицы x$users восстановленной БД, выполнив следующие действия:
В x$users открыть узел Triggers;
для таблицыДля триггера x$users_d из локального меню выбрать режим ;
Изменить оператор ALTER TRIGGER следующим образом (вставить оператор RETURN, не изменяя 'тело' триггера):
ALTER TRIGGER [dbo].[X$USERS_D] ON [dbo].[X$USERS] FOR Delete AS RETURN
Выполнить команду инструментальной панели
и выйти из режима (закрыть окно запроса).9) Войти в комплекс
под пользователем <NEWUSER> (см. шаг 7).В модуле x$users на редактирование и удалить всех пользователей кроме пользователя <NEWUSER>.
в меню открыть таблицуВыйти из комплекса
.10) Вернуть в исходное состояние (разблокировать) триггер x$users_d таблицы x$users восстановленной БД, выполнив следующие действия:
В x$users открыть узел Triggers;
для таблицыДля триггера x$users_d из локального меню выбрать режим ;
Изменить оператор ALTER TRIGGER следующим образом (удалить оператор RETURN, не изменяя 'тело' триггера):
ALTER TRIGGER [dbo].[X$USERS_D] ON [dbo].[X$USERS] FOR Delete AS
Выполнить команду инструментальной панели
и выйти из режима (закрыть окно запроса).11) Удалить всех пользователей из таблицы sysusers восстановленной БД (за исключением пользователя <NEWUSER>). Для этого необходимо выполнить в следующий запрос:
select 'exec sp_dropalias '''+substring(name,2,128)+'''' from sysusers where name like '\%'
Результатом данного запроса является скрипт, состоящий из запросов вида:
exec sp_dropalias '<User_Name>'
где <User_Name> - имя пользователя. Выполните все сформированные запросы, кроме запроса для пользователя <NEWUSER>.
После выполнения этого скрипта в таблице sysusers должны остаться dbo, guest, public, information_schema, предустановленные роли db_<роль> и новый пользователь.
12) Удалить в
все динамические хранимые процедуры восстановленной базы данных (Stored Procedures) с префиксами:DT, EQ, FT, GE, GR, LE, LS, LT, ML, NT, PS, RE
Скрипт для удаления хранимых процедур может быть получен путем выполнения в восстановленной базе данных запроса:
select 'drop procedure '+name from sysobjects where xtype = 'P' and name like '__0___________________________'
13) Выполнить в
для восстановленной БД:truncate table xx$hashvalues
14) Войти в комплекс NEWUSER> (см. шаг 7) и в модуле импортировать таблицу x$users из dbf, с использованием способа импорта 'импорт без замещения'.
под пользователем <На сообщение о попытке импорта системной таблицы ответить [
].В журнал импорта (файл Journal) будет выдано сообщение о том, что последняя запись, соответствующая новому пользователю, не вставилась в таблицу из-за дублирования ключа - так и должно быть.
15) Пересчитать права всем пользователям (модуль support.cfg параметр:
), установив предварительно вSQLDriver.ForceRights=On
Данная операция необходима для восстановления прав в .
16) При необходимости, включить подсистемы прав доступа (модуль
) и журнализации (модуль ) (последнюю, сначала придется 'выключить', т.к. в настроечной таблице осталась старая информация).Выйти из комплекса
17) Войти в систему NEWUSER>.
, проверить работу и, при необходимости, удалить нового пользователя <