MS SQL Server 2005/2008 Назад В начало Вперед

Для перемещения базы данных на другой сервер MS SQL Server 2005/2008 необходимо выполнить следующие действия:

1) Если новый MS SQL Server расположен на другом компьютере, то необходимо:

Для этого предварительно на новый сервер БД нужно скопировать каталог \DB_INST из серверной части системы.

Примечание: Установка вспомогательной службы является обязательным этапом, так как в процессе ее установки в базе данных master MS SQL Server формируются необходимые внешние хранимые процедуры.

[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_<имя восстанавливаемой базы данных> нужно изменить значение на новое.

[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) Восстановить базу данных на новом сервере из резервной копии (Restore Database), используя средства MS SQL Server.

При задании параметров восстановления базы данных проверьте правильность задания местонахождения файлов базы данных (страница Options окна =Restore database=) и при необходимости измените пути.

3) Создать средствами Microsoft SQL Server Management Studio логин MS SQL Server для пользователя, который должен являться владельцем БД системы Галактика ERP. Обычно им является пользователь GALAXYDBOWNER (см. п. Установка базы данных). Если для пользователя-владельца используется пустой пароль (SQL Server Authentication), то при создании логина необходимо снять флаг Enforce password policy.

4) Сменить владельца восстановленной БД на требуемое имя, например, выполнив запрос:

sp_changedbowner 'GALAXYDBOWNER'

5) Отключить подсистемы прав доступа (модуль Права доступа) и журнализации (модуль Журнализация), выполнив в Microsoft SQL Server Management Studio в восстановленной БД скрипт:

update x$journalconfig set typejournal=0
update abonents set protecton=0 from x$journalconfig
	 where abonents.officeno=x$journalconfig.officeno

6) Создать с помощью приведенного ниже запроса нового, заведомо не существующего в восстановленной БД, пользователя. Далее по тексту будем обозначать его как <NEWUSER>. Запрос выполняется средствами Microsoft SQL Server Management Studio в восстановленной БД и создает пользователя с правами администратора.

insert into x$users (xu$loginname,xu$type,xu$useroffice)
values ('NEWUSER',1,<номер офиса>);

При использовании NTLM авторизации для создания нового пользователя в восстановленной БД необходимо выполнить следующие шаги:

insert into x$users (xu$loginname,xu$type,xu$useroffice)
values ('<имя сервера БД>\NEWUSER',1,<номер офиса>);

7) Войти в комплекс Support под пользователем. <NEWUSER>. Запуск Support в этом режиме может быть выполнен с использованием параметров командной строки /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 и выйти из комплекса Support.

8) Для обеспечения возможности выполнения шага 9) необходимо заблокировать триггер x$users_d таблицы x$users восстановленной БД, выполнив следующие действия:

ALTER TRIGGER [dbo].[X$USERS_D] ON [dbo].[X$USERS] FOR Delete AS RETURN

9) Войти в комплекс Support под пользователем <NEWUSER> (см. шаг 7).

В модуле Экспорт/импорт в меню Сервис -> Просмотр структуры БД открыть таблицу x$users на редактирование и удалить всех пользователей кроме пользователя <NEWUSER>.

Выйти из комплекса Support.

10) Вернуть в исходное состояние (разблокировать) триггер x$users_d таблицы x$users восстановленной БД, выполнив следующие действия:

ALTER TRIGGER [dbo].[X$USERS_D] ON [dbo].[X$USERS] FOR Delete AS 

11) Удалить всех пользователей из таблицы sysusers восстановленной БД (за исключением пользователя <NEWUSER>). Для этого необходимо выполнить в Microsoft SQL Server Management Studio следующий запрос:

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) Удалить в Enterprise Manager все динамические хранимые процедуры восстановленной базы данных (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) Выполнить в Query Analizer для восстановленной БД:

truncate table xx$hashvalues

14) Войти в комплекс Support под пользователем <NEWUSER> (см. шаг 7) и в модуле Экспорт/импорт импортировать таблицу x$users из dbf, с использованием способа импорта 'импорт без замещения'.

На сообщение о попытке импорта системной таблицы ответить [Yes].

В журнал импорта (файл Journal) будет выдано сообщение о том, что последняя запись, соответствующая новому пользователю, не вставилась в таблицу из-за дублирования ключа - так и должно быть.

15) Пересчитать права всем пользователям (модуль Права доступа), установив предварительно в support.cfg параметр:

SQLDriver.ForceRights=On

Данная операция необходима для восстановления прав в MS SQL Server.

16) При необходимости, включить подсистемы прав доступа (модуль Права доступа) и журнализации (модуль Журнализация) (последнюю, сначала придется 'выключить', т.к. в настроечной таблице осталась старая информация).

Выйти из комплекса Support.

17) Войти в систему Галактика ERP, проверить работу и, при необходимости, удалить нового пользователя <NEWUSER>.