MS SQL Server 2000 Назад В начало Вперед

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

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) Создать средствами Enterprise Manager логин MS SQL Server для пользователя, который должен являться владельцем БД системы Галактика ERP. Обычно им является пользователь GALAXYDBOWNER (см. п. Установка базы данных).

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

sp_changedbowner 'GALAXYDBOWNER'

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

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

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

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 восстановленной БД, выполнив следующие действия:

CREATE TRIGGER X$USERS_D ON X$USERS FOR Delete AS RETURN

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

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

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

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

CREATE TRIGGER X$USERS_D ON X$USERS FOR Delete AS 

11) Убедиться, что в настройках сервера разрешено изменять системные таблицы (режим SQL Server Properties, вкладка Server Settings, флаг Allow modifications to be made directly to the system catalogs).

12) Удалить всех пользователей из таблицы sysusers восстановленной БД (за исключением пользователя <NEWUSER>), выполнив в Query Analizer следующий скрипт:

delete sysusers where (name like '\%' or uid > 3 and 
   (issqluser=1 or   isntuser=1)) and  name <> '\<NEWUSER>'
delete sysusers where name like 'GR#%'

После выполнения этого скрипта в таблице sysusers должны остаться dbo, guest, public, предустановленные роли db_<роль> и новый пользователь.

13) Удалить в 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___________________________'

14) Выполнить в Query Analizer для восстановленной БД:

truncate table xx$hashvalues

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

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

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

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

SQLDriver.ForceRights=On

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

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

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

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