Добрый день, коллеги.
Для интеграции Террасофт CRM с внутренней учетной системой мне нужно понимать изменилась ли запись в таблице. Поля CreatedOn и ModifiedOn не очень подходят, потому что часть логики реализована через хранимые процедуры и эти поля могут не содержать актуальной информации.

В качестве сервер БД используется MS SQL Server, поэтому я решил попробовать добавить в таблицу поле типа timestamp, которое обновляется при любом изменении записи. Но, естественно, столкнулся с проблемами:
1. При попытке добавления поля в эту таблицу и сохранение изменений в БД я получаю ошибку "cannot update timestamp column". Я не знаю, как Террасофт обновляет таблицы в БД на основании конфигурации, но выходит, что система пытается обновить поле, которое в конфигурации не описано.
2. Если выгрузить сервис такой таблицы в файл, а потом попытаться загрузить обратно, то получаю ошибку "Duplicate hash list entry ", где это идентификатор сервиса в конфигурации.

Очень похоже на то, что избранный мной способ решения задачи не сработает и нужно искать что-то другое. Существует ли другой способ однозначного детектирования изменения записи?

Нравится

3 комментария

Здравствуйте, Riptor.

Насколько я понял, Вы добавили поле напрямую через БД.
При сохранении сервиса таблицы Terrasoft происходит пересохранение структуры таблицы в БД в соответствии со структурой сервиса Terrasoft.

Прошу уточнить, почему бы просто не добавить новое поле "Дата/время" через конфигурацию и писать данные в него, к примеру, триггером?

Добрый день, Андрей.

"Безродный Андрей" написал:почему бы просто не добавить новое поле "Дата/время" через конфигурацию и писать данные в него, к примеру, триггером?

Скорее всего так и придется сделать. Думал, что проще поле добавить в 3 десятка таблиц, чем триггеры. С другой стороны интересно, почему платформа Террасофт поля CreatedOn и ModifiedOn не заполняет в триггере. Производительность?

Riptor

Да, дело в производительности.
В текущей реализации поля изменяются в ядре.
В случае изменения нескольких полей будет формироваться один запрос, а триггером - несколько.

Показать все комментарии

Существует небходимость настроить онлайн репликацию БД (MS SQL 2008 Express) для реализации работы сотрудников в отсутствии доступа к серверу.

Возможно существует руководство по созданию и настройке такой репликации, помогите найти :)

Нравится

1 комментарий

Штатными средствами mssql двустороннюю репликацию не настроишь - Express версия может быть только подписчиком (Subscriber) в модели репликации. Для того, чтобы быть Издателем изменений (Publisher) - надо версию "постарше"
Надеюсь коллеги из службы поддержки подскажут - возможно ли использовать механизм репликации Terrasoft 3.X для вашей задачи

Показать все комментарии

Возникла необходимость восстановления данных на центральной точке из клиентской БД. Эта же БД поднята на всех остальных клиентских точках. Вопрос: как сделать, чтоб пакеты репликации на все точки формировались с текущего момента?

Нравится

1 комментарий

Здравствуйте.

Для этого нужно на центральной и удалённых точках выполнить скрипты (Server.sql, Point.sql соответственно). Если удалённых точек больше одной, то нужно на сервере выполнять скрипт Server.sql столько раз сколько точек, при этом в теле скрипта изменять код точки (по умолчанию #02). Например #03, #04 и т.д. В результате выполнения скриптов будут передаваться те данные, которые были добавлены\изменены после выполнения скриптов.

С уважением, Terrasoft Support Team.

Показать все комментарии

Добрый день!!!

подскажи те пожалуйста как решить проблему. есть 2 базы данных: центральная и удаленная. на стороне удаленной базы данных родилась запись в таблице (таблица администрируется по записям, т.е имеет Right таблицу), при передаче в центральную базу запись передается а ее права нет. подскажите как решить данную проблему. при этом данная ситуация происходит через раз. отследить причину очень сложно. спасибо!!!

Нравится

1 комментарий

Здравствуйте.
Ситуация, достаточно, неоднозначная. Потребуется детальный анализ. Нужно сравнить информацию на детали доступ для записи, которая не отображается пользователю после выполнения обмена пакетами репликации. Существовала она до обнаружения проблемы или была передана вместе с правами? Как раздавались права на неё? На какой точке она редактировалась позже? Также важен момент: создавались ли фильтры в настройках репликации (закладка [Правила репликации] в утилите "Admin.exe"). Проанализировав всё это можно будет выдвигать какие-то предположения.
Terrasoft Support Team.
P.S.: Предлагаю дальнейшее взаимодействие по этому вопросу производить в рамках технической поддержки в виду узкой направленности проблемы.

Показать все комментарии

Согласно присланной документации от консультанта компании Террасофт, была произведена настройка подключения. Прилагаю картинку настроки. Были зарегистрированны почтовые библиотеки распологаемые в каталоги LIB. Далее был запущен мастер "Мастер по подготовки к репликации" - RepWizard.exe пройдя все окна согласно документыции я дошел до окна "Выполнить подготовку" - нажав данную клавишу я получил ошибку. Ошибку я прилагаю. От себя скажу что данную процедуру я пытался выполнить как на рабочей БД так и на пустой тестойвой, в результате везде одна и таже ошибка. Помогите пожалуйста. Спасибо!!!

PS Расшифровка ошибки с картинки:
Script: #1
CommandText: EXEC [rep_PrepareTables]

error message:
if not exists(select Column_Name
from information_schema.columns
where lower(Column_Name) = lower(N'Build_id')
and lower(Table_Name) = lower(N'tbl_Account'))
begin
alter table [tbl_Account] add [Build_id] [nvarchar](10)
constraint [DFAccount_Build_id]
default([dbo].[set_Build_id]())
EXEC(
'update [tbl_Account] set [Build_Id] = [dbo].[set_Build_id]()')
EXEC(
'alter table [tbl_Account] after column [Build_Id] [nvarchar](10) not null')
end
GO

Нравится

14 комментариев

Михаил, найдите в Вашей базе данных хранимую процедуру rep_PrepareTable. В ней должны быть такие строчки:

EXEC (
		''alter table [' + @ATableName + N'] after column [Build_id] [nvarchar](10) not null'')

Необходимо во второй строчке заменить слово after на alter.

Если у Вас возникнут сложности с выполнением этого действия, выложите скрипт "001.CandS.sql", который используется у Вас для настройки репликации. После того, как я внесу изменения, замените его и попробуйте настроить репликацию заново (с самого начала).

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Добрый день Олег!!!
я неправильно цитировал в PS ошибку
EXEC (''ALTER TABLE [' + @ATableName + N'] alter COLUMN [Build_id] [nvarchar](10) NOT NULL'')
вместо after было alter

прилогаю файл SQL.rar в котором выложенны все SQL файлы присланные Александром Котенко. Что в файлах у меня вызвало подозрение это то что процедура [rep_PrepareTable] создается 2 раза в файле 001.CandS.sql и 1(CandS).sql

Михаил, какая версия sql сервера у Вас? Опубликуйте пожалуйста результат select @@version.

Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (Intel X86) Mar 29 2009 10:27:29 Copyright (c) 1988-2008 Microsoft Corporation Standard Edition on Windows NT 6.0 (Build 6002: Service Pack 2)

Попробуйте при настройке соединения указать Sql native client и попробовать настроить репликацию еще раз.

Было произведено изменение в настройки подключения на Sql native client. Непомогло, вылетает эта же ошибка:

Script: #1
CommandText: EXEC [rep_PrepareTables]

error message:
if not exists(select Column_Name
from information_schema.columns
where lower(Column_Name) = lower(N'Build_id')
and lower(Table_Name) = lower(N'tbl_Account'))
begin
alter table [tbl_Account] add [Build_id] [nvarchar](10)
constraint [DFAccount_Build_id]
default([dbo].[set_Build_id]())
EXEC(
'update [tbl_Account] set [Build_Id] = [dbo].[set_Build_id]()')
EXEC(
'alter table [tbl_Account] alter column [Build_Id] [nvarchar](10) not null')
end
GO

Михаил, попробуйте настроить репликацию заново с присоединёнными скриптами.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Добрый день Олег!!!

после тестерования ваших новых выложенных файлах выявленны в них ошибки. текстовый файл с ошибками прилогаю. Настройка репликации непройдена

Михаил, добрый день.

Прошу прощения, Вы правы. Хотя большинство сообщений касается того, что в скриптах репликации используется в качестве разделителя точка с запятой, а не GO (Я так понимаю, Вы проверяли средствами SQL-сервера? В таком случае необходимо заменить ; на GO во всех местах, где это необходимо), но в некоторых местах были мои ошибки. Присоединяю к сообщению новые скрипты, попробуйте с ними.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Добрый день Олег!!!

установил я новые (последние выложенные вами) SQL файлы. Выполнил настройку репликации. Ошибка. Картинку прилогаю.

Олег для информации я хотел сказать, что конфигурация у нас "TerrasoftPRESS". Данная ошибка вылетает что на пустой конфигурации (полученной при покупке - ЭТАЛОН), что на доработанной. Для информации так же скажу, что полученная информация от Котенко Александра следующая "Наш механизм репликации работает, исключительно, с продуктами Х25, Х25+SD, XRM, XRM+SD. Судя по скриншоту, Вы пробовали настраивать данную функциональность на базе «Terrasoft Press»." Помогите пожалуйста настроить данные SQL файлы под PRESS. Спасибо!!!

Михаил, добрый день.

Мы проанализируем возможность настройки репликации для Terrasoft Press и в ближайшее время дадим ответ.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Добрый день Олег!!!

спасибо за ответ. Буду ждать вашего результата.

Заменив сервис tbl_AccountAddress в TSPress у меня подготовка к репликации прошла успешно.
________________
www.it-sfera.com.ua

"Домброва Михаил" написал:
Скачав и установив сервис выложенный михаилом выполнил настройку репликации результат все таже ошибка описанная выше Помогите пожалуйста срочно требуется настроить репликацию баз данных спасибо

Показать все комментарии

Добрый день.

Настроил репликацию для двух точек.
База велась на одной территории, потом поставил базу на другую.
Базу переносил при помощи той же репликации.
Т.е. на точке создал пустую базу и сказал - реплицируй.
Пользователи конечно ни какие не перенеслись.

Завел логины поключил их к базе... Все работает... Видят все кому чего положено...

Eсть три человека, которые могут управлять проектами. Они могут редактировать проекты, но не могут добавить файл в проект. Вылезает ошибка

[09.12.08 15.49.50.749] (E)     Ошибка выполнения метода 'amiAddFileOnExecute'. Текущий пользователь не имеет достаточно прав для добавления записей в таблицу 'tbl_FileInOpportunity' «Call Stack»

На основной точке они в эти проекты добавлять файлы могут.
Права в SQL я сравнил - все одинаково.

Я посмотрел, на эту таблицу в SQL-у явные права даны в группе "Все пользователи" (если смотреть из интефейса Террасофта, то у группы "Все пользователи" нет вообще ни одной галочки !!!???). Эти три пользователя в эту группу входят...

Помогите пожалуйста в этой ситуации.

Нравится

27 комментариев

Зашел под именем одного из проблемных пользователей в SQL Query Analyzer. Запись в таблицу добавилась без всяких проблем.

Кирилл, какие лицензии у "проблемного" пользователя?

Не очень понял вопрос...
Как у всех. У нас у всех лицензии одинаковые...
А они разные бывают?

Я думаю, что там все кроме администратора не смогут в проект файл добавить, просто остальным и нельзя этого делать, поэтому никто и не пробовал.

Конкурентные и именные

У нас именные.

Да, они бывают не только конкурентные и именные, но еще на разные продукты. Например: SD Agent и SD User. У "проблемного" пользователя какие?

А как это посмотреть?

Но наверное не в лицензии дело, т.к. на основной точке этот пользователь файлы к проекту цепляет без проблем.

Какое имя пользователя и Ваш Customer ID?

Можете в "личку" написать.

Написал

Да, с лицензиями все ок.
Выполните под "проблемным" пользователем запрос на центральной точке и на удаленной:

SELECT * FROM [dbo].[fn_CurrentUserTableGroupRoleList] ()
WHERE [SQLObjectName] = 'TG_OPPORTUNITY'
GO

Какие результаты?

Кирилл, есть ли у Вас документ "TSCRM MSSQL Руководство по репликации.doc"? Если есть посмотрите пункт 5.2. Использование утилиты репликации.

на основной
read 1; insert 1; update 1; delete 0

на второй

read 1; insert 0; update 1; delete 0

???

Ну как бы все понятно:)
На основной разрешено добавление, на второй нет.

Да не очень понятно...
Права то стоят, я даже ему явные давал без групп на добавление и изменение файлов и проектов ничего не помогает.
Сейчас сравнил права в террасофте сделал точно все одинаково
Все равно не работает.
Причем результат запроса остался прежним. Т.е. прав не хватает.

Как Вы проверяете что права в SQL на основной точке и удаленной совпадают для таблицы tbl_FileInOpportunity?

В базе данных существует роль TG_OPPORTUNITY_CI, этой роли разрешена вставка в таблицы tbl_Opportunity и tbl_FileInOpportunity. Так ли это на удаленной точке?
Когда Вы разрешаете через раздел Администрирование роли или пользователю вствку в группу таблиц "Проекты", пользователь или роль становится членом роли и получает возможность вставки записи. Так ли это на удаленной точке?

в SQL EM -> Tables -> tbl_FileInOpportunity -> Permission -> List only ...
Там остается 5 групп TG_..._CD, ..CI ..CR ..CD и Все пользователи у групп TG права на свою функцию у "Все пользователи" на все кроме удаления.

Ну да так и есть
TG_OPPORTUNITY_CI права есть
в эту группу включены все нужные группы и пользователь там такой есть.
Один из трех человек вообще включен в группу администрация, которая потенциально может делат все...

Откройте на удаленной точке в Администраторе таблицу tbl_FileInOpportunity. Указана ли там группа таблиц "Проекты"?

Создал новые проект проверил добавление файлов у всех трех пользователей.

Ситуация такая: у двоих работает, у одного (собственно самого нужного) - нет.

Отличаются они тем, что последний пользователь самый новый.
Я его заводил в террасофт, когда базы были уже разделены.
Т.е. он не реплицировался со всеми вместе в начале, а заведен потом...

Есть ли у Вас документ "TSCRM MSSQL Руководство по репликации.doc"? Если есть посмотрите пункт 5.2. Использование утилиты репликации.

Руководство есть. Репликация работает, все передается, все принимается.

Да указана

Кирилл, не может все передаваться и приниматься.
В п.5.2. описаны ограничения, которые появились в версии 3.2:

В версии Terrasoft CRM 3.2 по репликации не передаются таблицы логирования, пользователи, роли, права на группы таблиц, права на поля таблиц, а также вхождения пользователя в роль и роли в роль на сервере.

"Хомутов Кирилл" написал:Т.е. на точке создал пустую базу и сказал - реплицируй.
Пользователи конечно ни какие не перенеслись.

"Хомутов Кирилл" написал:Завел логины поключил их к базе... Все работает... Видят все кому чего положено...

Я имел ввиду, что данные переносятся.

Объясню более подробно. Репликация может передавать только данные, которые храняться в пользовательский таблицах, таких как tbl_Account, tbl_Contact и т.п. Пользователи и роли храняться в таблице tbl_AdminUnit, и данные этой таблицы передаются, но(!) начиная с версии 3.1.0 мы создаем еще пользователей и на стороне сервера: логины, пользователи и роли. Эти объекты уже не данные, а обьекты базы данных и сервера и репликация их не "видит". Для того чтобы и они передавались Вам необходимо написать sql скрипты по созданию пользователя(не как записи в таблице tbl_AdminUnit, а через конструкции sp_adduser или create user - зависит от версии sql сервера), логина(sp_addlogin или create login), ролей и опять же запросом раздать права инструкциями GRANT, REVOKE и DENY. И эти запросы добавить в таблицу rep_ExecutedSQL(см. п. "5.3.1. Отправка SQL-скриптов" все того же руководства)

Спасибо Вам, Александр, за помощь!

Получилось у меня все!!!

Я переподключил пользователей в группы в террасофте...
До этого я делал это только с группой "Все пользователи", поскольку только она фигурировала в правах на таблицу. Сейчас сделал просто по всем имеющимся...

По поводу переноса пользователей я понял, но мне и не нужно, чтобы у меня пользователи реплицировлись.

Показать все комментарии

Добрый день.

У меня версия Террасофта 3.2.0.57, MSSQL

Два офиса, настроена репликация между ними.

Проблемы три.
1. Периодически, где-то раз в два, дня слетает пароль на РОР3 сервер. В логах появляется ошибка

  (POP3.Connect) Invalid Account name OR password

И все естественно останавливается...
Лечится просто пересохранением пароля в утилите admin.exe.

2. Почему-то иногда не происходит репликация состояния задач. Т.е. в центральной базе задачу поставили, взяли в работу, выполнили, там изменились даты начала и конца, время выполнения, а на точке задача так и стоит в состоянии не начата с пустыми полями даты и времени.
Причем такая ситуация бывает иногда и не совсеми задачами

3. Как можно "перереплицировать" базу на определенную дату.
Т.е. допустим случился случай 2. Как можно исправить ситуацию что бы обе базы были одинаковы?

Нравится

8 комментариев

Вторая проблема вероятно как-то связана с первой. Т.к. такое было всего два раза и оба после "застревания" репликации.
Т.е. все задачи, которые меняли статус в период, когда обмен не шел из-за ошибок с одной стороны и отсутствия подтверждения с другой, остались в старом статусе.
Причем новые задачи при возобновлении репликации создались, а стырые не изменились.

Кирилл, добрый день.

Действительно, подобные проблемы могут возникать в случае, если репликация завершилась неудачно (например, во время выгрузки или загрузки данных отключили свет или пользователь снял задачу).

В этом случае, если не использовать прямого вмешательства в базу данных средствами СУБД, необходимо очистить буферную базу cm_empty (в утилиту SetOffline входит возможность очистки базы), пометить все неподтверждённые отправки как неуспешные и запустить репликацию повторно. В этом случае утилита репликации начнёт выгрузку данных, начиная с даты последней успешной репликации.

Если же Вам необходимо повторно передать на точку только одну таблицу или несколько записей из этой таблицы, Вы можете выполнить примерно такой запрос (привожу пример для таблицы задач):

update tbl_Task
set TimeChange = getdate()
where ... (Ваше условие)

Обращаю Ваше внимание, что если последняя репликация завершилась неуспешно, выполнение данного запроса гарантирует только то, что обновлённые Вами записи будут участвовать в репликации, но кроме них передадутся и все те, что были изменены после даты последней успешной репликации. Для того, чтобы передались только записи нужной Вам таблицы, необходимо, чтобы последняя репликация была успешной.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Спасибо за ответ.
Вчера попробовал. Все получается.

А что делать с ошибками в почте?
Приходится постоянно смотреть не свалилась ли она, чтобы оперативно ее подталкивать.

Появилась новая напасть...
На центральной точке перестала уходить почта, в логе появляется сообщение

(SMTP Send) Invalid receiver address

Причем она штук 5-12 писем отправляет "потом бац и вторая смена"
Это происходит только в одну сторону с центрального на удаленный.

Почтовые ящики сначала были на yandex.ru, потом я перенес их на свой домен. Изменился язык сообшения об ошибке... Т.е. это сервер ругается...

С ошибкой по SMTP разобрался - это ограничения у провайдера.

Осталось с POP3...

Кирилл, после того, как Вы перенесли ящики, проблема с POP3 осталась?
Дело в том, что утилита RepOffline.exe только считывает настройки с Settings.ini, записывать туда или изменять что-либо она не может.
Попробуйте сделать копию файла Settings.ini при нормальной работе утилиты репликации, и ещё одну после возникновения проблемы, а потом сравните оба файла - изменяются ли настройки, или нет.
Также прошу уточнить схему Вашей работы с репликацией: данные отправляются/получаются автоматически или вручную; если автоматически, то как именно это настроено; с какой частотой происходит передача данных и какой средний размер пакетов с данными.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Сейчас проблемы нет, в прошлый раз она проявилась дней через 5-7 после того, как я запустил репликацию.
Я думаю нужно подождать с недельку и посмотреть появится или нет.

Схема такова
На центральном месте запускается RepOffLine -ro 0 В 15 и в 45 минут каждого часа
А на удаленном - запускается RepOffLine -ro 0 В 00 и в 30 минут каждого часа

Объем где-то 200-400 кб

Спасибо за помощь.

Думаю, проблема должна устраниться после пересоздания почтового ящика.

Если возникнет снова - сообщите, пожалуйста.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Хорошо. Спасибо Вам.

Показать все комментарии

Добрый день.

Настроил репликацию между двумя офисами. Все вроде заработало... Но потом репликация остановилась.
На одной из точек появилось сообщение: "Предыдущая репликация завершилась с ошибкой". Посмотрел ошибку:

Cannnot INSERT the value NULL INTO COLUMN "TypeID", TABLE 'tscrm.dbo.tbl_Task'; COLUMN does NOT allow nulls. INSERT fails.

В базах на обоих точках в таблице tbl_Task нет записей со значением поля TypeId равным NULL.

Нашел в каталоге BadArchive файл, где должна быть ошибка, но его не понятно даже чем можно прочитать...

Посоветуйте пожалуйста, что можно сделать в такой ситуации.

Нравится

4 комментария

Кирилл, все верно что нет записей - для этого ограничение и существует:) По ошибке. Репликация при приеме пакета, сначала вставляет записи без внешних ключей, а потом апдейтами проходится и обновляет ссылки. Так поле TypeID - ссылка, то при вставке записи оно не участвует в запросе, но на нем еще и ограничение NOT NULL - что и не позволяет сделать вставку. При подготовке репликации утилита проходится по всем внешним ссылкам и если они содержат ограничение NOT NULL, изменяет на NULL, но к сожалению не делает это на уровне сервиса, только на уровне базы данных. Вопрос:
1. Какая версия приложения у Вас.
2. Какая версия репликации(за какое число)
3. Пересохраняли ли Вы сервис tbl_Task после настройки репликации? Или добавляли ли Вы доп. реквизиты к задаче после настройки репликации?

Добрый день, Александр.
Версия у меня 3.2.0.33
дата создания файла RepOffline 15 мая 2009
Сервис Tbl_Task пересохраняли и поля добавляли. Причем на второй базе это пришлось сделать руками.

Кирилл, читали ли Вы руководство "TSCRM MSSQL Руководство по репликации.doc" в частности пункт "5.3.3.2. Добавление пользовательского поля" ?

А, вот в чем дело...
Я подумал, что поскольку я не пользовательское поле добавлял. Мне этого и не нужно делать...

Мы в окошко задач добавили поле "Фактическая дата начала" (как в 3.3) Соответственно там изменилось много сервисов, включая tbl_Task. Сервисы перенеслись.
Сейчас посмотрел, значение нового поля не переносится...

Спасибо. Буду разбираться.

Показать все комментарии

Доброго времени суток,
При настройке репликации столкнулся с следующей проблемой:
Утилита репликации (RepOffline.exe) при попытке подключения к БД выдаёт ошибку
"[DBNETLIB][ConnectionOpen(InvalidInstance()).] Недопустимое подключение"
Утилита запускается на том же компьютере где запущен MS SQL5. В настройках для входа на сервер пробовал использовать данные как Windows, так и Террасовтовской БД.
Предварительные операции по переносу *.exe,*.dll и *.sql фаилов, библиотек и регистрации сетевых библиотек согласно "Руководству по репликации" выполнены.

Нравится

29 комментариев

Здравствуйте!
Уточните пожалуйста Вы настраиваете или запускаете уже готовую репликацию? Потому как согласно документации RepOffline.exe - это "утилита репликации", настройка производится RepWizard.exe и SetOffline.exe

Добрый день! Уточните, пожалуйста, настраивали ли Вы строку соединения с помощью утилиты SetOffline.exe?

> Уточните пожалуйста Вы настраиваете или запускаете уже готовую репликацию?
Настраиваю.
> Потому как согласно документации RepOffline.exe - это "утилита репликации", настройка производится RepWizard.exe и SetOffline.exe
При запуске RepWizard.exe выдаёт ошибку
"Connection string is not adjusted.
Run SetOffline.exe to set up connection parameters."

*Утилита которая выдаёт ошибку указанную в стартовом сообщении - SetOffline.exe
Ошибка появляется после "Настроить -> Поставщик данных: "Microsoft OLE DB Provider for SQL Server" -> Выбор сервера -> логин//пароль пользователя -> Выбор БД на сервере"

Влияет ли эта ошибка на дальнейшую работу утилиты SetOffline.exe? Если дальнейшая работа возможна, то необходимо перенастроить строку соединения с базой на правильную.

Так ошибку какая утилита выдает? SetOffline.exe? Опубликуйте скриншот пожалуйста.

> Влияет ли эта ошибка на дальнейшую работу утилиты SetOffline.exe?
Влияет. Дальнейшая работа утилиты невозможна.
> Так ошибку какая утилита выдает? SetOffline.exe?
да, SetOffline.exe.
> Опубликуйте скриншот пожалуйста.
http://img377.imageshack.us/img377/2972/reperrormg0.png

Ошибка появляется при выборе БД (непосредственно при запросе списка). Если подключать БД вручную эта же ошибка возникает при проверке подключения:
http://img152.imageshack.us/img152/9238/reperror2ux1.png

Здравствуйте!
1. Какого поставщика данных Вы выбираете?
2. Это сервер или клиентская машина?
3. Сервер COMP доступен? К нему можно подключиться?
4. Какая версия MSSQL? Опубликуйте результат select @@version

> 1. Какого поставщика данных Вы выбираете?
Microsoft OLE DB Provider for SQL Server
> 2. Это сервер или клиентская машина?
Это сервер.
> 3. Сервер COMP доступен? К нему можно подключиться?
Да, доступен. На нем и запущена утилита.
> 4. Какая версия MSSQL? Опубликуйте результат select @@version
Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86)
Oct 14 2005 00:33:37
Copyright (c) 1988-20
05 Microsoft Corporation
Express Edition on Windows NT 5.1 (Build 2600: Service Pack 3)

Добрый день!
Существует проблема при подключении к MSSQL2005 через поставщика Microsoft OLE DB Provider for SQL Server. Необходимо использовать SQL Native Client.

Вы уверены, что имя сервера MSSQL именно COMP? А не к примеру COMP\SQLEXPRESS?

> Вы уверены, что имя сервера MSSQL именно COMP? А не к примеру COMP\SQLEXPRESS?

Выбирал из предложенного в списке.

> Существует проблема при подключении к MSSQL2005 через поставщика Microsoft OLE DB Provider for SQL Server. Необходимо использовать SQL Native Client.

Если я правильно понял, то в дальнейших при использовании SQL Native Client поле "Источник данных" должно оставаться пустым (только в этом случае проверка подключения удачна (http://img364.imageshack.us/img364/1773/reperror3eh5.png)).
Однако в дальнейшем при запуске RepWizard.exe -> "Настройка репликации на центральной точке" не удаётся создать бэкап базы:
http://img261.imageshack.us/img261/4797/reperror4ab1.png
На диске C: свободно 32 Gb, размер БД - 350 Mb.

upd: при выборе сервера "COMP\SQLEXPRESS" успешно подключилось и выполнило бэкап. Спасибо.

При дальнейшем использовании утилиты RepWizard.exe на этапе подготовки БД возникла следующая проблема:
http://img233.imageshack.us/img233/9682/reperror5eu7.png

проблема возникает регулярно при каждой новой попытке запуска настройки репликации, в т.ч. после выполнения скрипта сброса метаданных.

* На всех папках (временных БД, \Bin, папки БД и бэкапа БД) на уровне файловой системы стоит полный доступ для всех пользователей, а также непосредственно для пользователя под которым осуществляется запуск утилиты.

С доступом на папки это не связано. Попробуйте при подключении указать не SQL Native Client как поставщика данных, а Microsoft OLE DB Provider for SQL Server.

При указании "SQL Native Client", параметры подключения для SetOffline.exe:
Provider=SQLNCLI.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TOTAL_NEW;Application name="SetOffline.exe"
При дальнейшей настройке через RepWizard.exe не удаётся создать бэкап:
http://img261.imageshack.us/img261/4797/reperror4ab1.png

Максим, можно сейчас выполнить хранимую процедуру вручную, через MS Management Studio таким образом:

exec rep_PrepareClearDatabase 'cm_Clear'

Выполнять на рабочей базе

>При указании "SQL Native Client", параметры подключения для SetOffline.exe:
>Provider=SQLNCLI.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TOTAL_NEW;Application name="SetOffline.exe"

В этой строке нет параметра Data_Source. Значит, что в настройках соединения не указан сервер, на котором находится указанная база. Надо указать.

Можно заменить файл в папке скриптов подготовки репликации 001.CandS.sql на тот, что во вложении.

Выполнял операции в обратном порядке, т.е. вначале заменил 001.CandS.sql, потом добавил указание сервера (теперь строка SetOffline.exe:
Provider=SQLNCLI.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TOTAL_NEW;Data Source=COMP\SQLEXPRESS;Application Name=SetOffline.exe;Application name="SetOffline.exe" ), далее выполнил процедуру exec rep_PrepareClearDatabase 'cm_Clear', теперь выдаёт следующую ошибку:
http://img373.imageshack.us/img373/7797/reperror6en0.png

Во вложении сервис скрипта. Его нужно загрузить через TSAdmin.exe, открыть там же на редактирование и нажать F9 - он запустится на выполнение и для полей, на которых есть внешний ключ, уберет признак "Обязательное". После выполнения нужно снова запустить мастер создания схемы репликации.

Лог работы TSAdmin'a во вложении.
Результат работы RepWizard'a - ошибка идентичная предыдущей (http://img373.imageshack.us/img373/7797/reperror6en0.png).

Доброго дня!
Весьма странный лог в Вашем прикрепленном файле. Вот последние строчки функции, которая реализована в выложенном мною скрипте:

	Log.Write(1, 'Services without license:'); // - вывод списка таблиц, которые не сохранились в следствие отсутствия лицензии на модуль
	WriteArrayToLog(ServicesHasNoLicenseArray);
	Log.Write(1, 'Services with error while saving:');  // - вывод списка таблиц, которые не сохранились в следствие ошибок
	WriteArrayToLog(ServicesHasSaveError);
	Log.Write(1, 'Process finished'); // - последняя строка

Как отсюда видно, в конце лога работы моего скрипта должно быть как минимум три строчки такого содержания:
Services without license:
Services with error while saving:
Process finished'

В логе, который Вы прикрепили последние строчки выглядят так:
[08.12.23 16.31.27.218] (E) tbl_WorkflowItem
[08.12.23 16.31.27.718] (W)
[08.12.23 16.31.27.750] (E) tbl_Account
[08.12.23 16.31.29.578] (W) Process stopped

Как видно, они кардинально отличаются от моего скрипта. Я на всякий случай перепроверил содержимое архива, загрузил себе сервис скрипта, который там лежит и запустил - все выполнилось без проблем. Вероятно, Вы запустили на выполнение не тот скрипт. Проверьте еще раз все. Если проблема не обнаружена - предоставьте скриншоты загруженного и открытого скрипта в TSAdmin, а так же полный исходный текст скрипта.

Действительно запускал не тот скрипт.
Лог загруженного и скрин работы RepWizard'a в прикрепленных.

Судя по ошибке в логе Вы на одном сервере делали бэкап базы и потом поднимали его на другом. При этом пользователи в базе переносятся, а пользователи сервера с пользователями базы не связываются. Для решения проблемы нужно выполнить в SQL Management Studio следующее:

exec sp_change_users_login 'Update_One', 'fkeys', 'fkeys'

после этого запустить скрипт еще раз

Доброго дня!
Еще один вариант решения проблемы - распаковать прикрепленный архив в папку с репликацией(в нем обновленные скрипты подготовки репликации). При использовании этих скриптов проблем не возникает.

> Для решения проблемы нужно выполнить в SQL Management Studio следующее:
> exec sp_change_users_login 'Update_One', 'fkeys', 'fkeys'
> после этого запустить скрипт еще раз
Это помогло. Настройка подготовки репликации на сервере прошла успешно. Спасибо.

Здравствуйте!
У нас та же проблема у пользователя при обычном входе в Terrasoft, хотя с другого компьютера этот пользователь заходит нормально. Иногда помогает перезагрузка компьютера.

Здравствуйте.
Вопросом "пускать или не пускать" пользователя в систему занимается сервер СУБД. Если откуда-то пользователь заходит, то с его учётной записью всё нормально. В этой ситуации нужно смотреть на конечного клиента (рабоче место). Если используются конкурентные лицензии, то параметры подключения должны быть настроены точно так же, как и на той машине, где формировался запрос на лицензии. Например, если на машине, где был сформирован запрос был указан сервер БД через IP-адрес, то и на остальных клиентах точно также должен быть указан IP сервера. Если было указано имя, то и везде тоже должно быть указано имя. Если эти рекомендации не помогут, обратитесь, пожалуйста, в службу технической поддержки для более оперативного решения проблемы. Вероятнее всего понадобится удалённый доступ.
С уважением, Terrasoft Support Team.

Спасибо! Вместо IP-адреса задал имя сервера и помогло.

Показать все комментарии