17.11.2006, 08:11 | #1 |
Участник
|
суть решаемой проблемы: создать актуальную копию БД на физически другом компьютере для построения ресурсоемких отчетов и экспериментов пользователей если не уверены в правильности действий.
Ресурсы: основная БД - NAvision 3.60A 4 Gb SQL, SQL server 2000 enterprise + SP4, OS Windows 2000 server в терминальном режиме +SP3 + Citrix Metaframe. Клиенты работают кто терминально кто со своих компьютеров локально. Реплика - расположена пока на админском компьютере. Windows XP Pro incl SP2, SQL server 2000 developers edition + SP4. Оба компьютера в одном домене. Поднят DNS, WINS. Создаю с помощью визардов паблишера и дистрибутора на основном сервере, тип репликации - репликация транзакций, подписчика создаю на компьютере на котором должна храниться реплика (т.е. на своем), создаю Push подписку агент выполняется на дистрибуторе. Проблема: В первый раз все стартует нормально, отабатывает первичный SnapShot и данные переносятся из дистрибоутора в подписчика, при дальнейшем изменении данных (для упрощения эксперимента взял только одну статью - таблицу Employee) на исходной бд дистрибутор (точнее Distribution Agent) ругается что не может выполнить процедуры на подписчике "Syntax error or access violation (Source: ODBC SQL Server Driver (ODBC); Error number: 37000)" если более подробно то какая то белиберда типа: "{CALL sp_MSdel_ООО _Аутдор Центр_$Employee ('INTANT', '', '', 'интант25', '', '', 'INTANT', '', '', '', '', '', '', '', '', '', 1753-01-01 00:00:00.000, 1753-01-01 00:00:00.000, NULL, 1753-01-01 00:00:00.000, '', '', '', 0, '', '', '', '', 1753-01-01 00:00:00.000, 0, 1753-01-01 00:00:00.000, '', 1753-01-01 00:00:00.000, '', '', '', '', 2006-11-16 00:00:00.000, '', '', '', '', '', '', '', 0, '', '', 0, '', 0.00000000000000000000, 0, 0, 0, 0, 1753-01-01 00:00:00.000, 0, '', 1753-01-01 00:00:00.000, '', 0, 175 Transaction sequence number and command ID of last execution batch are 0x000000D8000043E5000100000000 and 1." такое впечатление что не может выполнить хранимую процедуру на подписчике. Проверял, там такая процедура есть. Уже третью неделю роюсь, начал учить TSQL ну ничего не могу поделать. Подскажите п-та решал ли кто такие проблемы? Это связано со структурой данных БД Navision или это SQL-ные заморочки? |
|
17.11.2006, 10:01 | #2 |
Участник
|
1. Версии объектов (читай структура таблиц) на паблишере и подписчике одинаковы?
2. Сравните порядок колонок на паблишере и подписчике. Если для удаления/вставки/модицификации на подписчике используются хранимые процедуры, то Вам придется накатывать обновления на подписчике в том же порядке что и на паблишере, для того чтобы порядок полей при выполнении хранимок не слетал. 3. При создании БД ставили галку поддерживать связи? Если да, то может ругаться на отсутствие внешнего ключа. |
|
17.11.2006, 10:22 | #3 |
Участник
|
1 Да версии одинаковые. БД на подписчике сделана из БД паблишера. через процедуру BackUp и Restore средствами клиента Navision
2 абсолютно одинаковый. Я специально сделал статью из одной таблицы для экспериментов чтобы все совпадало 3 не помню, скорее всего не ставил т.к. не ругается на внешний ключ но посмотрю на всякий случай еще раз проверил что происходит при изменении данных в исх БД. Агент чтения транзакций находит изменение и заносит его в спец таблицу, (получается 3 операции), агент дистррибучения лезет в эту таблицу и пытается применить эти транзакции через хранимые процедуры на подписчике (хранимые процедуры на подписчике были созданы визардом) передавая им нужные данные и после чего и получается сообщение об ошибке см сабж. |
|
17.11.2006, 10:25 | #4 |
Участник
|
Скорее всего из-за BLOB полей (Picture).
Исключите поле из репликации |
|
17.11.2006, 10:37 | #5 |
Участник
|
Спасибо за поддержку. Я тоже думаю нехорошо на BLOB поле. Ща попробую поэкспериментировать без него
|
|
17.11.2006, 11:06 | #6 |
Участник
|
исключил BLOB поле из статьи ничего не помогло. Та же самая ошибка. :-((((
просто капец какой то. Делал все по книжке SQL Server 2000 руководство администратора и ничё не получается. Все мозги уже набекрень свернул |
|
27.11.2006, 15:02 | #7 |
Участник
|
Проблема в пробеле в названии компании. И соответственно в имени хранимой процедуры
|
|
11.12.2006, 14:22 | #8 |
Ищу людей. Дорого.
|
Вы чего??? Тут и так все понятно )).. Канечно ничего работать не будет)) .
CALL sp_MSdel_ООО _Аутдор Центр_$Employee - типа ошибка, а если внимательней??? CALL sp_MSdel_ООО _Аутдор - это первый оператор Центр_$Employee - второй оператор ) Пробелс.. мешает.. Короче все по порядку.. Во-первых.. Пробелов в названии фирмы быть не должно во-вторых.. Будет лучше если фирма будет называться по английски.. так не будет проблем с кодировкой.. Это конечно можно все избежать, если ручками поменять названия хранимок и в тригерах на табличках.. помоему еще где то, но я не помню уже.. нужно копать Далее... в навижинских табличках есть поле типа timestamp.. Репликация транзакциями не поддерживает этот тип. .При первом снапшоте например оно создаст тип поля binary.. Этот тип любит мердж.. без него он не работает.. Я лично дописывал специальные хранимые процедуры, что бы при снапшоте добавлялось это поле А при создании реплики.. поле timestamp нужно исключать из списка реплицируемых полей.. А можно вообще без снапшота.. ручками синхронизируешь, а потом подписка без инициализации.. |
|
|
За это сообщение автора поблагодарили: mira (1). |
12.12.2006, 14:53 | #9 |
Участник
|
Цитата:
У нас фирма называется по-русски - с двумя пробелами.... вроде все в порядке... (правда у нас и репликации нет) |
|