SQL Server Express 2012 Pull Sync через RMO не видит подписку

Я пытаюсь настроить репликацию между SQL Server 2012 и SQL Server Express 2012. Я настроил публикацию и подписки через SSMS и пытаюсь выполнить синхронизацию через RMO.

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

Но я вижу подписку в SSMS. Это прямо там, глядя на меня. Должно быть, я что-то упускаю из того, как их настроить. Я уже удалил и заново создал и публикацию, и подписку. Не повезло.

Обновлено: код примера изменен для поиска TransPullSubscriptions. Код из второй ссылки теперь корректно печатает подписку.

Однако код для фактического запуска синхронизации по-прежнему не видит подписку на сервере.

Тест свойств загрузки завершается неудачно, но продолжение выдает ошибку: "SynchronizationAgent" можно использовать только в том случае, если объект представляет существующий объект на сервере.

Обновлено: теперь с БОЛЬШИМ кодом!

    static void SynchronizeMergePullSubscriptionViaRMO()
    {
        // Define the server, publication, and database names. 
        string subscriberName = "testsubDBserver";
        string publisherName = "testpubDBserver";
        //string distributorName = "distribution";
        string publicationName = "test_sub";
        string subscriptionDbName = "Data";
        string publicationDbName = "Data";

        // Create a connection to the Subscriber. 
        ServerConnection conn = new ServerConnection(subscriberName);

        TransPullSubscription subscription;
        TransSynchronizationAgent agent;

        try
        {
            // Connect to the Subscriber. 
            conn.Connect();

            // Define the pull subscription. 
            subscription = new TransPullSubscription();
            subscription.ConnectionContext = conn;
            subscription.DatabaseName = subscriptionDbName;
            subscription.PublisherName = publisherName;
            subscription.PublicationDBName = publicationDbName;
            subscription.PublicationName = publicationName;

            // If the pull subscription exists, then start the synchronization. 
            if (!(subscription.LoadProperties()))
            {
                // Get the agent for the subscription. 
                agent = subscription.SynchronizationAgent;

                // Set the required properties that could not be returned 
                // from the MSsubscription_properties table. 
                //agent.PublisherSecurity = SecurityMode.Integrated;
                agent.DistributorSecurityMode = SecurityMode.Integrated;
                agent.Distributor = publisherName;

                // Enable verbose merge agent output to file. 
                agent.OutputVerboseLevel = 4;
                agent.Output = "D:\\logs\\mergeagent.log";

                // Synchronously start the Merge Agent for the subscription. 
                agent.Synchronize();
            }

person Andrew Martin    schedule 24.02.2014    source источник
comment
Мой пример здесь (заголовок stackoverflow.com/questions/13481091/) ищет подписки Merge pull. Вы изменили его для поиска транзакционных подписок по запросу?   -  person Brandon Williams    schedule 24.02.2014
comment
Обновлено, чтобы ответить на ваш комментарий и добавить пример кода.   -  person Andrew Martin    schedule 25.02.2014
comment
Становимся ближе. Могу ли я увидеть код перед подпиской.LoadProperties(), пожалуйста?   -  person Brandon Williams    schedule 25.02.2014
comment
Конечно вещь. Вот и все на самом деле. За исключением того, где я ловлю исключение.   -  person Andrew Martin    schedule 25.02.2014
comment
Действительно ли название публикации test_sub?   -  person Brandon Williams    schedule 25.02.2014
comment
Для начала убедитесь, что у вас правильно заданы имена подписчиков, имена издателей, имена публикаций, имена баз данных подписки и имена баз данных публикаций. Если они верны, тогда subscribe.LoadProperties() вернет true, если подписка существует на сервере, и все остальное будет работать.   -  person Brandon Williams    schedule 25.02.2014
comment
да. На самом деле это мои тестовые значения. Но вы правы, и у меня была небольшая опечатка между моей базой данных паба и моими настройками здесь. Теперь это работает. Спасибо за помощь. Как отметить этот вопрос как ответ?   -  person Andrew Martin    schedule 25.02.2014


Ответы (1)


Ответ заключается в том, чтобы еще раз проверить свою работу на наличие опечаток, даже если вы полностью уверены, что все написано правильно. testpubDBserver != testpubBDserver.

Спасибо Брэндону за помощь.

person Andrew Martin    schedule 25.02.2014