Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Синхронизация между SQL Server'ами через Web  [new]
Ахмед
Member

Откуда:
Сообщений: 80
Всем здравствуйте! Да, проблема уже освещалась, но в существующих темах решения я не нашел.

Ситуация:
SQL Server №1 (Издатель) -> IIS7 -> Интернет -> IIS7 -> SQL Server №2 (Подписчик)

Поясню:
Есть 2 SQL Server 2008 R2 в разных сетках, которые разделяет интернет. В каждой сети есть свой домен, не связанный с другим. Сервера БД из интернета НЕ видны.
В каждой сети есть свой Web-сервер под управлением IIS7, который доступен из инета.

Задача:
Настроить синхронизацию определенной БД между двумя SQL Server'ми. Настроить VPN канал между серверами возможности нет.

После поисков выяснилось, что тут может выручить только Web-синхронизация.
Делал все по мануалам MSDN'a (как же там все тяжело описано). Но вот ни хочет стартовать она.

Что сделано:

Со стороны Издателя настроен IIS7 для работы Web-синхронизации. Допустим адрес: https://webserver1.ru/replisapi.dll. Он работает, по запросу https://webserver1.ru/replisapi.dll?diag выводится отладочная информация.

На Издателе создана "Публикация слиянием" - "testpublish". В ее настройках указан параметр "Разрешить сихронизацию подписчиков с помощью соединения с веб-сервером" и указан адрес https://webserver1.ru/replisapi.dll
На Издателе создана задача для SQL Server Agent для этой публикации.

На Подписчике была создана "pull" - подписка. (вроде по требованию). Но она была создана через хранимые процедуры, т.к. мастер создания публикаций не видит издателя. Скрипт брался с MSDN:
+ Скрипт
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @websyncurl AS sysname;
DECLARE @security_mode AS int;
DECLARE @login AS sysname;
DECLARE @password AS nvarchar(512);
SET @publication = N'testpublish';
SET @publisher = N'PublisherServerName';
SET @publicationDB = N'testdb';
SET @websyncurl = 'https://webserver1.ru/replisapi.dll';
SET @security_mode = 0; -- Basic Authentication for IIS 
SET @login = N'DOMAIN1\User';
SET @password = N'PASSWORD';

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE testdb
EXEC sp_addmergepullsubscription 
	@publisher = @publisher, 
	@publication = @publication, 
	@publisher_db = @publicationDB;

-- Add an agent job to synchronize the pull subscription. 
EXEC sp_addmergepullsubscription_agent 
	@publisher = @publisher, 
	@publisher_db = @publicationDB, 
	@publication = @publication, 
	@distributor = @publisher, 
	@job_login = N'DOMAIN2\User', 
	@job_password = N'PASSWORD',
	@use_web_sync = 1,
	@internet_security_mode = @security_mode,
	@internet_url = @websyncurl,
	@internet_login = @login,
	@internet_password = @password;
GO


Скрипт отрабатывает, все создается. Нахожу на подписчике нужную задачу, правый клик -> Start Job At Step. Задача отрабатывает с ошибкой. Лезу в логи и вижу это:

+ 1 - Успех

Date 28.02.2012 15:55:20
Log Job History (SANDBSRV-testdb-testpublish-EXPDB\DEVELOP-testdb- 0)

Step ID 1
Server EXPDB\DEVELOP
Job Name SANDBSRV-testdb-testpublish-EXPDB\DEVELOP-testdb- 0
Step Name Запустить агента.
Duration 00:00:01
Sql Severity 0
Sql Message ID 0
Operator Emailed
Operator Net sent
Operator Paged
Retries Attempted 0

Message
Агент репликации был успешно запущен. Дополнительные сведения см. в мониторе репликации.

+ 2 - Успех (косяк с кодировкой подсказывает что тут что-то не так)

Date 28.02.2012 15:55:20
Log Job History (SANDBSRV-testdb-testpublish-EXPDB\DEVELOP-testdb- 0)

Step ID 1
Server EXPDB\DEVELOP
Job Name SANDBSRV-testdb-testpublish-EXPDB\DEVELOP-testdb- 0
Step Name Запустить агента.
Duration 00:00:02
Sql Severity 0
Sql Message ID 0
Operator Emailed
Operator Net sent
Operator Paged
Retries Attempted 0

Message
2012-02-28 11:55:21.236 (c) ╩юЁяюЁрЎш  ╠рщъЁюёюЇЄ (Microsoft Corporation), 2008
2012-02-28 11:55:21.236 └ухэЄ ЁхяышърЎшш Microsoft SQL Server: replmerg
2012-02-28 11:55:21.236
2012-02-28 11:55:21.236 ╬ЄьхЄъш тЁхьхэш фюсртыхээ√х ъ ёЄЁюърь т√їюфр юЄюсЁрцр■Єё  т ЇюЁьрЄх UTC (яю ├Ёшэтшўє).
2012-02-28 11:55:21.237 User-specified agent parameter values:
-Publisher SANDBSRV
-PublisherDB testdb
-Publication testpublish
-Subscriber EXPDB\DEVELOP
-SubscriberDB testdb
-SubscriptionType 1
-SubscriberSecurityMode 1
-Distributor SANDBSRV
-XJOBID 0x4E2547AC04CE0C4CA420E823DC7BF629
-XJOBNAME SANDBSRV-testdb-testpublish-EXPDB\DEVELOP-testdb- 0
-XSTEPID 1
-XSUBSYSTEM Merge
-XSERVER EXPDB\DEVELOP
-XCMDLINE 0
-XCancelEventHandle 0000000000000704
-XParentProcessHandle 0000000000000720
2012-02-28 11:55:21.334 ╤юхфшэхэшх ё ╧юфяшёўшъ "EXPDB\DEVELOP"
2012-02-28 11:55:21.675 ╤юхфшэхэшх ё ╧юфяшёўшъ "EXPDB\DEVELOP"
2012-02-28 11:55:21.851 ╤ючфрхЄё  ёююс∙хэшх юс юЄяЁртъх фы  шчфрЄхы  "SANDBSRV"
2012-02-28 11:55:21.907 ╧ЁюЎхёё ёыш эш  шёяюы№чєхЄ шфхэЄшЇшърЄюЁ Exchange "F12FAB70-EC88-4CEB-9F67-EEF866AA58C5" фы  ¤Єюую ёхрэёр тхс-ёшэїЁюэшчрЎшш.
2012-02-28 11:55:22.108 ═х єфрхЄё  эрщЄш єърчрээ√щ Їрщы.

2012-02-28 11:55:22.159 Category:NULL
Source: ╧ЁюЎхёё ёыш эш 
Number: -2147221502
Message: ═х єфрхЄё  эрщЄш єърчрээ√щ Їрщы.

2012-02-28 11:55:22.166 Category:NULL
Source: ╧ЁюЎхёё ёыш эш 
Number: -2147199373
Message: └ухэЄє ёыш эш  эх єфрыюё№ ёюхфшэшЄ№ё  ё яЁюъёш-ёхЁтхЁюь ╚эЄхЁэхЄр фы  яюы№чютрЄхы  "User" тю тЁхь  тхс-ёшэїЁюэшчрЎшш. ╙схфшЄхё№ т Єюь, ўЄю эрёЄЁющъш яЁюъёш-ёхЁтхЁр т юсючЁхтрЄхых Internet Explorer єърчрэ√ тхЁэю, ышсю єърцшЄх ярЁрьхЄЁ -InternetProxyServer яЁш чряєёъх рухэЄр ёыш эш .
2012-02-28 11:55:22.175 Category:NULL
Source: ╧ЁюЎхёё ёыш эш (ъышхэЄ тхс-ёшэїЁюэшчрЎшш)
Number: -2147024896
Message: └ухэЄє ёыш эш  эх єфрыюё№ ёюхфшэшЄ№ё  ё URL-рфЁхёюь "https:/webserver1.ru/replisapi.dll" тю тЁхь  тхс-ёшэїЁюэшчрЎшш. ╙схфшЄхё№, ўЄю єърчрэ яЁртшы№э√щ URL-рфЁхё, єўхЄэ√х фрээ√х фы  тїюфр т ╚эЄхЁэхЄ ш эрёЄЁющъш яЁюъёш-ёхЁтхЁр, р Єръцх яЁютхЁ№Єх фюёЄєяэюёЄ№ тхс-ёхЁтхЁр.

+ 3 - Провал

Date 28.02.2012 15:55:20
Log Job History (SANDBSRV-testdb-testpublish-EXPDB\DEVELOP-testdb- 0)

Step ID 1
Server EXPDB\DEVELOP
Job Name SANDBSRV-testdb-testpublish-EXPDB\DEVELOP-testdb- 0
Step Name Запустить агента.
Duration 00:00:02
Sql Severity 0
Sql Message ID 0
Operator Emailed
Operator Net sent
Operator Paged
Retries Attempted 0

Message
Выполняется от имени пользователя: DOMAIN2\User.Произошел сбой в агенте репликации. Дополнительные сведения см. в журнале в сообщении для предыдущего шага задания или в мониторе репликации. Шаг завершился с ошибкой.


Подскажите где накосячил или сделал не правильно.
28 фев 12, 16:07    [12164724]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация между SQL Server'ами через Web  [new]
Ахмед
Member

Откуда:
Сообщений: 80
Ладно, разобрался сам. Попозже опишу в чем была беда. Но как говорят "Беда не приходит одна"
Теперь оба сервера друг друга видят, соединение идет, но все равно синхронизация не завершается. Возникает следующая ошибка:
+ Текст статуса Синхронизации на Подписчике
Возникла ошибка при организации доступа к "testtbl1_2.sch" из-за ошибки в операционной системе [3="Системе не удается найти указанный путь."] во время веб-синхронизации. Убедитесь, что пользователь -InternetLogin (во время использования обычной проверки подлинности) или пользователь, выполняющий слияние (во время использования встроенной проверки подлинности Windows), получил доступ к хранилищу моментального снимка.

+ Текст из журнала задачи на Подписчике
Date 02.03.2012 16:19:10
Log Job History (SANDBSRV\MSSQLSERVER2-testdb-testpublish-EXPDB\DEVELOP-testdb- 0)

Step ID 1
Server EXPDB\DEVELOP
Job Name SANDBSRV\MSSQLSERVER2-testdb-testpublish-EXPDB\DEVELOP-testdb- 0
Step Name ‡ ЇгбвЁвм  ЈҐ­в .
Duration 00:00:02
Sql Severity 0
Sql Message ID 0
Operator Emailed
Operator Net sent
Operator Paged
Retries Attempted 0

Message
2012-03-02 12:19:10.362 (c) Корпорация Майкрософт (Microsoft Corporation), 2008
2012-03-02 12:19:10.362 Агент репликации Microsoft SQL Server: replmerg
2012-03-02 12:19:10.362
2012-03-02 12:19:10.362 Отметки времени добавленные к строкам выхода отображаются в формате UTC (по Гринвичу).
2012-03-02 12:19:10.362 User-specified agent parameter values:
-Publisher SANDBSRV\MSSQLSERVER2
-PublisherDB testdb
-Publication testpublish
-Subscriber EXPDB\DEVELOP
-SubscriberDB testdb
-SubscriptionType 1
-SubscriberSecurityMode 1
-Distributor SANDBSRV\MSSQLSERVER2
-XJOBID 0x64C885F97B551042ADAA76266D8974C5
-XJOBNAME SANDBSRV\MSSQLSERVER2-testdb-testpublish-EXPDB\DEVELOP-testdb- 0
-XSTEPID 1
-XSUBSYSTEM Merge
-XSERVER EXPDB\DEVELOP
-XCMDLINE 0
-XCancelEventHandle 00000000000007E4
-XParentProcessHandle 00000000000007D4
2012-03-02 12:19:10.432 Соединение с Подписчик "EXPDB\DEVELOP"
2012-03-02 12:19:10.612 Соединение с Подписчик "EXPDB\DEVELOP"
2012-03-02 12:19:10.689 Создается сообщение об отправке для издателя "SANDBSRV\MSSQLSERVER2"
2012-03-02 12:19:10.714 Процесс слияния использует идентификатор Exchange "762B19CB-B4F8-4F82-A89E-BE1CC35220CD" для этого сеанса веб-синхронизации.
2012-03-02 12:19:11.556 Слияние данных не требуется.
2012-03-02 12:19:11.613 Сообщение запроса создано, происходит подготовка к отправке.
2012-03-02 12:19:11.646 Размер запроса на передачу составляет 1248 байт.
2012-03-02 12:19:12.381 Передано всего 1 фрагментов данных.
2012-03-02 12:19:12.437 Сообщение запроса было отправлено "https://URL/replisapi.dll"
2012-03-02 12:19:12.475 Загружено всего 3 фрагментов данных.
2012-03-02 12:19:12.550 Возникла ошибка при организации доступа к "testtbl1_2.sch" из-за ошибки в операционной системе [3="Системе не удается найти указанный путь."] во время веб-синхронизации. Убедитесь, что пользователь -InternetLogin (во время использования обычной проверки подлинности) или пользователь, выполняющий слияние (во время использования встроенной проверки подлинности Windows), получил доступ к хранилищу моментального снимка.
2012-03-02 12:19:12.595 Category:NULL
Source: Процесс слияния
Number: -2147467259
Message: Возникла ошибка при организации доступа к "testtbl1_2.sch" из-за ошибки в операционной системе [3="Системе не удается найти указанный путь."] во время веб-синхронизации. Убедитесь, что пользователь -InternetLogin (во время использования обычной проверки подлинности) или пользователь, выполняющий слияние (во время использования встроенной проверки подлинности Windows), получил доступ к хранилищу моментального снимка.
2012-03-02 12:19:12.603 Category:NULL
Source: Процесс слияния
Number: -2147467259
Message: Ошибка обработки ответного сообщения.



Пользователь указанный в -InternetLogin имеет доступ к папке расположения snapshot'ов на Издателе. Есть у кого-нить идеи что делать?
2 мар 12, 16:27    [12184784]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация между SQL Server'ами через Web  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Ахмед
SQL Server №1 (Издатель) -> IIS7 -> Интернет -> IIS7 -> SQL Server №2 (Подписчик)
Что-то порочное мне в этом видится.
Ахмед
проблема уже освещалась
А можно ссылочки.
3 мар 12, 16:44    [12188517]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Синхронизация между SQL Server'ами через Web  [new]
alex-SK
Member

Откуда:
Сообщений: 1
Ахмед, здравствуйте!
Опишите пожалуйста, как решили проблему с кодировкой в журнале.
18 авг 16, 11:00    [19556149]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация между SQL Server'ами через Web  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37155
alex-SK
Ахмед, здравствуйте!
Опишите пожалуйста, как решили проблему с кодировкой в журнале.

Последнее сообщение: 02 марта 2012, 16:27 (1629 дней 19 часов 60 минут назад). Думаете, придет и ответит?
18 авг 16, 12:28    [19556756]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить