Страница 1 из 2
После докомпиляции тестовой базы не могу зайти в рабочую
Добавлено: 30 мар 2014, 12:39
LexPV
Ситуация следующая:
Попытался сделать тестовый переход на Галактику 9.1. В новую базу Gal910 восстановил последний бэкап рабочей базы Gal810 (на том же сервере MS SQL Server 2000), отключил Protect и Journal, очистил журнал, удалил хранимые процедуры с префиксами DT, EQ и т. д. Настроил alter.cfg на базу Gal910 и запустил dicom.bat. Придя на следующий день, обнаружил что докомпиляция закончилась ошибкой. В alter.log последние строки:
17:14:01 │ Информация: Изменение структуры таблицы "SPSOPR" (стр.191, поз.1 в LOT\ALTER.LOT)
│ #info Изменение структуры таблицы "SPSOPR"
│ ^
│ Содержимое стека подключаемых файлов:
│ C:\GAL\Alter810-91\Lot\Start.lot(11)
12:30:42 │ Ошибка: Попытка изменения таблицы SPSOPR завершилась неудачно.
│ Внутренняя ошибка интерфейса доступа к базе данных. Подробности в ms70drv.log (стр.235, поз.2 в LOT\ALTER.LOT)
│ );
│ ^
│ Содержимое стека подключаемых файлов:
│ C:\GAL\Alter810-91\Lot\Start.lot(11)
В ms70drv.log :
29.03.2014 17:27:15 [SUPERVISOR]:
ALTER TABLE T$SPSOPR ALTER COLUMN F$KOLGRM DECIMAL(31,15) NOT NULL
29.03.2014 17:27:15 [SUPERVISOR]:
42000: [Microsoft][ODBC SQL Server Driver][SQL Server]The log file for database 'Gal910' is full. Back up the transaction log for the database to free up some log space.
01000: [Microsoft][ODBC SQL Server Driver][SQL Server]The statement has been terminated.
Посмотрев лог-файл базы Gal910 (Gal910Log.dat), увидел что он вырос более чем на 100 Гб (притом что исходная база весила 90), что привело к заполнению диска.
После восстановления базы Gal910 из бэкапа Gal810 (чтобы освободить место на диске) перезапустил MS SQL Server и попробовал зайти в Галактику 8.1 в рабочую базу.
При запуске как supervisor выдает ошибку и пишет в ms70drv.log:
30.03.2014 13:17:20 [SUPERVISOR]:
28000: [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'SUPERVISOR'.
30.03.2014 13:17:20 [SUPERVISOR]:
[NAPSrv]: Error call to SQL server. See details in application event log on MSSQL server
В системном логе выдает две ошибки:
NAPServer => Error code (0): 22001: [Microsoft][ODBC SQL Server Driver]String data, right truncation
NAPServer => Error code (997): RegisterBadLogin5
При запуске как пользователь выдает ошибку и пишет в ms70drv.log:
30.03.2014 13:24:02 [MOL]:
28000: [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'MOL'.
Такая же ситуация при попытке войти в тестовую базу, с которой вообще ничего не происходило.
Напсервер для 9.1 установлен заранее и работал с 8.1 без проблем. Его переустановка проблему не решила.
Re: После докомпиляции тестовой базы не могу зайти в рабочую
Добавлено: 31 мар 2014, 03:32
LexPV
Один вопрос снимается, рабочую базу запустил. В EM отключил Protect и в Support сделал безусловный пересчет прав. Но все равно хотелось бы узнать, что за фигня произошла при докомпиляции и как она ухитрилась затронуть рабочую базу, которой вообще не должна была касаться.
Re: После докомпиляции тестовой базы не могу зайти в рабочую
Добавлено: 31 мар 2014, 15:25
zeha_t
Скорее всего вы что-то напутали при настройке...может права не в той базе отключили, может думали что в той
Если есть возможность, разверните чистую девятку на отдельном сервере, создайте базу пустую со словарём от 8-ки, туда залейте бэкап от gal810, потом докомпильните и настройте клиенты девятки на "докомпильнутую" базу...следите за ростом ЛОГА и за ростом базы tempDB, она может увеличиться в размере при докомпиляции и заполнить диск, тогда опять процесс встанет.
Re: После докомпиляции тестовой базы не могу зайти в рабочую
Добавлено: 01 апр 2014, 07:47
LexPV
К сожалению, такой возможности нет. MS SQL 2000 только на одном сервере, на других другие версии, да и заняты они другими системами. Никто не даст экспериментировать с чужими серверами. Насчет ошибки в настройках - все настройки в файле asql.cfg остались как были, кроме настроек на базу, ключ и лицензионный файл. Впрочем, могу привести содержимое файла:
! Пример настройки для MS-SQL:
[DataBase]
DataBaseDriver= ms70drv.DLL // драйвер
DataBaseName=Gal910 // имя исходной базы данных
[SQLDriver]
SQLServer=ncacn_ip_tcp:SIGMA[1997] // имя SQL-сервера
! Пример настройки для Oracle:
! [DataBase]
! DataBaseDriver= ora90drv.DLL // драйвер
! DataBaseName=Gal810 // имя схемы исходной базы данных
! [SQLDriver]
! SQLServer=orc1 // SID
! Пример настройки для Pervasive.SQL
! [database]
! databasename=C:\12.07.2013\BD_Galaktika\PSQL_DB_2012
! [SQLDriver] // раскомментируйте эти строки, если вы при работе в Галактике
! FullLoginName=On // и Support используете длинные имена логинов
vip.MSinCompatibleTables=*
Compilers.ErrorLevel=3
Compilers.WriteListing=ON
System.FullSQL=On
System.AcceptDictVersion=52
! Создавать таблицы
Dicom.BuildTables=OFF
! Не выдавать ошибку если длина имени файла больше 8-ми символов
Dicom.SkipFileNameLengthErrors=On
// Размер имени поля в DBF 24 символа
[Lot]
DBFFieldNameSize=24
[Login]
UserName=supervisor
[HardwareKey]
SharedPath=\\SIGMA\HWDIR
[LicParam]
LicFileName = \\SIGMA\Gal810\EXE\LICENSE.LIC
Перепутать базу, где отключал Protect и Journal не мог, проверил и перепроверил.
Re: После докомпиляции тестовой базы не могу зайти в рабочую
Добавлено: 01 апр 2014, 11:15
edward_K
Вам надо было проанализировать, что увеличилось. Возможно следует поставить в агент задачу по периодическому сжатию лога.
Насчет 2000 SQL - давно пора обновить на более свежий (2008 официально поддерживается, 2012 работает, но требует пару правок в драйвере в 810) . В любом разе конвертацию лучше делать на тестововм серваке - дабы не положить рабочий.
Re: После докомпиляции тестовой базы не могу зайти в рабочую
Добавлено: 01 апр 2014, 12:12
zeha_t
LexPV...
Факт остаётся фактом - рабочая база "легла", а это не есть хорошо...
Уважаемый edward_K прав, нужно делать на отдельном сервере, чтоб в идеале, дабы не попортить и не запутаться где там восьмёрка и девятка, и прочее.
Если всё-таки склонировать сервер восьмёрки или поднять новый - нет возможности, то тогда проверьте всё ещё раз и снова запускайте, следите за логом, за tempdb, урезайте лог в крайнем случае, создайте ещё один файл лога на другом диске где место есть (можно и на горячую в ходе докомпиляции).
Удачи. Будут вопросы, пишите, помогу на скоко могу
Re: После докомпиляции тестовой базы не могу зайти в рабочую
Добавлено: 02 апр 2014, 16:53
vist
edward_K писал(а):Насчет 2000 SQL - давно пора обновить на более свежий (2008 официально поддерживается, 2012 работает, но требует пару правок в драйвере в 810)
А что за пара правок в драйвере???
У меня докомпиляция прошла нормально, все работает, НО после включения протекта никто не может войти ни в сапорт, ни в Галактику.
Правда при включении протекта генерится ошибка
Re: После докомпиляции тестовой базы не могу зайти в рабочую
Добавлено: 02 апр 2014, 17:13
edward_K
Ищите
. ms70drv.drv - дублировать свои мессаги или искать ссылки на них мне лень.
А вот про ошибку при влключении протекта можно и поподробней написать - мож мысль какая и придет.
Опять же в ms70drv.log много чего написано. Возможно вы забыли указать FullloginName или настроить ODBC
Собственно корректность логина там можно и проверить. Ну и про логи SQL тоже не забываем.
Часто бывает, что приходится пароль в MSSQL перебивать(он должен совпасть с тем что в базе лежит) и после этого пользователь
может попасть в галактику.
Re: После докомпиляции тестовой базы не могу зайти в рабочую
Добавлено: 03 апр 2014, 12:03
vist
edward_K писал(а):А вот про ошибку при влключении протекта можно и поподробней написать - мож мысль какая и придет.
Переход: ОС с Windows server 2003R2 на Windows server 2012
MS SQL c 2008 на 2008R2
Порядок перехода по инструкции «Для перемещения базы данных на другой сервер
MS SQL Server 2005/2008 необходимо выполнить следующие действия»:
Backup на старом сервере
Установка на новом сервере Галактики(т.к. нужен NAP) +база Russia(убедится что все работает)
Restore рабочей базы на новом сервере под другим именем
Докомпиляция восстановленной базы
Подключение докомпилированной базы согласно инструкции
П15.Галочку безусловного пересчета прав при расчете прав поставил
При включении Protect получаю сообщение об ошибке:
Внутренняя ошибка интерфейса доступа к базе данных. Подробности в ms70drv.log
Ошибка изменения статуса системы разграничения прав!
Содержимое ms70drv.log:
01.04.2014 16:27:43 [NEWUSER]:
Используется SQL Server ODBC Driver 06.02.9200 Программа может работать некорректно
01.04.2014 16:28:08 [NEWUSER]:
[NAPSrv]: Error call to SQL server. See details in application event log on MSSQL server
В журнале MS SQL чисто
В журнале приложений Windows 3 ошибки
Имя журнала: Application
Источник: NAPServer$ATRON_GALAXY
Код события: 1
1. NAPServer$ATRON_GALAXY => Error code (0): ModifyAtlUser BUX14,(null),цз |(Яф P 'vw43,-1,0,(null)
2. NAPServer$ATRON_GALAXY => Error code (0): 42000: [Microsoft][ODBC SQL Server Driver][SQL Server]Незакрытые кавычки в конце символьной строки "".
42000: [Microsoft][ODBC SQL Server Driver][SQL Server]Неправильный синтаксис около конструкции "vw43".
3. NAPServer$ATRON_GALAXY => Error code (0): exec ModifyAtlUser ?,?,?,?,?,?
Без Protect-а все работает и запускается на восстановленной базе!!!
Re: После докомпиляции тестовой базы не могу зайти в рабочую
Добавлено: 03 апр 2014, 12:30
edward_K
хм
смущает
SQL Server ODBC Driver 06.02.9200 - вы какой драйвер то указали в ODBC?
У меня кажет 06.01.7601 - Sql Server.
Есть еще SQL Native Client - с ним могут быть проблемы.
Либо naps на серваке древный + ms70drv.dll
Ну и ругнулось на конкретного зверя - нет ли каких то странностей с ним?
Он первый по какому то ключу? По atl_nrec или loginname
Что за vw43?
Можно попробовать посмотреть процедуру ModifyAtlUser - что пихается в этот параметр?
А вообще для письма в ТП хватит.
Re: После докомпиляции тестовой базы не могу зайти в рабочую
Добавлено: 03 апр 2014, 15:30
zeha_t
vist писал(а):edward_K писал(а):А вот про ошибку при влключении протекта можно и поподробней написать - мож мысль какая и придет.
Переход: ОС с Windows server 2003R2 на Windows server 2012
MS SQL c 2008 на 2008R2
Порядок перехода по инструкции «Для перемещения базы данных на другой сервер
MS SQL Server 2005/2008 необходимо выполнить следующие действия»:
Backup на старом сервере
Установка на новом сервере Галактики(т.к. нужен NAP) +база Russia(убедится что все работает)
Restore рабочей базы на новом сервере под другим именем
Докомпиляция восстановленной базы
Подключение докомпилированной базы согласно инструкции
П15.Галочку безусловного пересчета прав при расчете прав поставил
.
.
.
Без Protect-а все работает и запускается на восстановленной базе!!!
Когда делали по инструкции «Для перемещения базы данных на другой сервер
MS SQL Server 2005/2008 - пользователей из таблицы users удаляли? Если да, то всех?
Re: После докомпиляции тестовой базы не могу зайти в рабочую
Добавлено: 03 апр 2014, 20:59
vist
edward_K писал(а):хм
смущает
SQL Server ODBC Driver 06.02.9200 - вы какой драйвер то указали в ODBC?
У меня кажет 06.01.7601 - Sql Server.
Есть еще SQL Native Client - с ним могут быть проблемы.
Либо naps на серваке древный + ms70drv.dll
Ну и ругнулось на конкретного зверя - нет ли каких то странностей с ним?
Он первый по какому то ключу? По atl_nrec или loginname
Что за vw43?
Можно попробовать посмотреть процедуру ModifyAtlUser - что пихается в этот параметр?
А вообще для письма в ТП хватит.
ODBC Driver родные windows 2012
Про SQL Native Client - я знаю, что с ним не работает, хотя пора бы
NAP не может быть древним - т.к. ставилось вчистую с дистрибутива 91
vw43 - зверь реально неизвестный - такого пользователя нет
ТП пока молчит
Re: После докомпиляции тестовой базы не могу зайти в рабочую
Добавлено: 03 апр 2014, 21:06
vist
zeha_t писал(а):Когда делали по инструкции «Для перемещения базы данных на другой сервер
MS SQL Server 2005/2008 - пользователей из таблицы users удаляли? Если да, то всех?
Пользователей из таблицы users удалил всех, кроме одного NewUser
Re: После докомпиляции тестовой базы не могу зайти в рабочую
Добавлено: 04 апр 2014, 11:06
edward_K
В Stored Procedure вашей базы
Код: Выделить всё
USE [galacf]
GO
/****** Object: StoredProcedure [dbo].[ModifyAtlUser] Script Date: 04.04.2014 9:07:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[ModifyAtlUser]
@login sysname,
@nlogin sysname = null,
@pwd varchar(25) = null,
@asadm bit = null,
@drop_unused_login bit = null,
@grp sysname = null
as begin
if @login is null return
if @nlogin is null or @nlogin=@login begin
declare @r int
exec @r=CreateAtlUser @login, @pwd, @asadm, @grp
return @r
end
declare @ntype char(1) = case when charindex(char(92),@nlogin)=0 then 'S' else 'U' end
if @ntype='S' begin
exec CheckAtlUserName @nlogin
if @@error > 0 return
end
if @drop_unused_login is null set @drop_unused_login=0
declare @nsid varbinary(85),
@nltype char(1),
@ndbname sysname,
@npwdok int,
@npid int,
@nuname sysname,
@nutype char(1),
@nuschm sysname,
@nulogin sysname,
@nubad bit
exec GetAtlUserInfo @nlogin, @pwd, @nsid out, @nltype out, @ndbname out, @npwdok out, @npid out, @nuname out, @nutype out, @nuschm out, @nulogin out, @nubad out
declare @type char(1) = case when charindex(char(92),@login)=0 then 'S' else 'U' end,
@sid varbinary(85),
@ltype char(1),
@dbname sysname,
@pwdok int,
@pid int,
@uname sysname,
@utype char(1),
@uschm sysname,
@ulogin sysname,
@ubad bit
exec GetAtlUserInfo @login, @pwd, @sid out, @ltype out, @dbname out, @pwdok out, @pid out, @uname out, @utype out, @uschm out, @ulogin out, @ubad out
declare @use_nlogin bit = case when @drop_unused_login=0 or @type='U' or @ntype='U' or @sid is null /*or @ltype<>@type or @ubad=1*/ then 1 else 0 end
declare @use_nuser bit = case when @pid is null or @ubad=1 or @type<>@ntype then 1 else 0 end
if @use_nlogin=1 and @nubad=1 begin
raiserror ('В БД к логину %s привязан некорректный юзер',11,1,@nlogin)
return
end
declare @rtype char(1)
if @grp is not null begin
select @rtype=r.type from sys.database_principals r where r.name=@grp
if coalesce(@rtype,'R')<>'R' begin
raiserror ('''%s'' has bad type. Cure this',11,1,@grp)
return
end
end
if @use_nlogin=1 begin
if @drop_unused_login=1 and @sid is not null and @ltype=@type and @ubad<>1
begin try
exec ('drop login ['+@login+']')
end try
begin catch
end catch
exec ValidateAtlLogin @nlogin, @dbname, @ntype, @npwdok, @pwd
if @@error > 0 return
end else begin
if @nsid is not null begin
exec ('drop login ['+@login+']')
if @@error>0 return
end
exec ValidateAtlLogin @login, @dbname, @type, @pwdok, @pwd, @nlogin
if @@error > 0 return
end
if @use_nuser=1 begin
if @pid is not null
begin try
exec ('drop user ['+@uname+']')
end try
begin catch
end catch
if @npid is null begin
exec ('create user ['+@nlogin+'] for login ['+@nlogin+'] with default_schema=dbo')
if @@error > 0 return
end else if @nuschm<>'dbo' begin
exec ('alter user ['+@nlogin+'] with default_schema=dbo')
if @@error > 0 return
end
end else begin
if @nuname=@nlogin begin
exec ('drop user ['+@nuname+']')
if @@error > 0 return
end
exec ('alter user ['+@login+'] with name=['+@nlogin+'],login=['+@nlogin+'],default_schema=dbo')
if @@error > 0 return
end
declare @newlogin bit = case when @use_nlogin=1 and @nsid is null then 1 else 0 end,
@newuser bit = case when @use_nuser=1 and @npid is null then 1 else 0 end,
@newgrp bit = case when @rtype is null then 1 else 0 end
exec ValidateAtlRoles @nlogin, @asadm, @newlogin, @newuser, @grp, @newgrp
if @@error > 0 return
return 1
end
Видимо пароль не воспринялся. Проверьте все таки версию напса. Да и про кодировку инстанса и базы не забудьте.
Re: После докомпиляции тестовой базы не могу зайти в рабочую
Добавлено: 04 апр 2014, 13:51
vist
edward_K писал(а):
Видимо пароль не воспринялся. Проверьте все таки версию напса. Да и про кодировку инстанса и базы не забудьте.
Чей пароль не воспринялся
Попытки под другой учеткой админа тоже неудачны...
NAP версия 5.5.12.0
Сортировка сервера Cyrilic_General_CI_AS
Сортировка базы Cyrilic_General_CI_AS