У меня проблемы с настройкой репликации через VPN.
У меня есть база данных SQL Server 2008 R2 Enterprise Edition на сервере Windows 2008 R2.
SQL Server работает на нестандартном порту. Я настроил его так, чтобы он действовал как собственный дистрибьютор, и настроил издателя на этом сервере. Он настроен как обновляемое транснациональное издание (да, это необходимо).
На этом сервере у меня включена маршрутизация и удаленный доступ, чтобы иметь возможность устанавливать VPN-соединения. Он настроен со статическим пулом IP-адресов, первый из которых в диапазоне всегда назначается серверу. Я назначил тестирующему пользователю статический адрес в этом диапазоне (не знаю, нужно это или нет).
Все клиенты будут версии 2008 R2, но могут быть экземплярами SQL Express или автономными разработчиками полного продукта.
Я могу без проблем установить VPN-соединение от клиента и видеть, что назначены правильные IP-адреса.
После подключения к базе данных, чтобы проверить, что я могу установить соединение, я понял, что мне нужно иметь возможность подключаться к базе данных, используя имя сервера, а не IP-адрес, необходимый для репликации, который изначально не работал. Я создал запись в файле hosts для сервера на клиенте, используя имя NETBIOS сервера, и теперь я могу подключиться к серверу с клиента, используя SERVER\INSTANCE, PORT
синтаксис через VPN. Поскольку это экземпляр по умолчанию на сервере, я также могу подключиться просто SERVER, PORT
синтаксис.
После всего этого я все еще получаю следующую ужасную ошибку: SQL Server replication requires the actual server name to make a connection to the server. Connections through a server alias, IP address, or any other alternate name are not supported. Specify the actual server name, 'SERVER\INSTANCE'. (Replication.Utilities)
.
Что я пропустил? Как мне заставить это работать?
TIA
Попробуйте эту команду:
select name from sys.servers
Посмотрите, что будет восстановлено. Это имя необходимо использовать для подключения к серверу при настройке репликации.
Или измените его на имя, которое хотите использовать:
sp_dropserver 'currentname'
go
sp_addserver 'changedname' , 'local'
Затем необходимо перезагрузить движок db
Я решил это в прошлом, создав псевдоним на стороне сервера (cliconfig) с тем же именем, которое удаленный сервер показывает в sys.servers, но имя и порт сервера указывают на IP-адрес и порт SQL, поскольку не было разрешения имен .
Просто бессвязный разговор, возможно, слишком поздно для вас, но полезный для гуглфайеров: исходя из того, что я прочитал, я предполагаю, что вам нужно добавить псевдоним на локальный сервер, так как немного сложно найти именованный экземпляр. Клиент SQL Server перейдет в браузер SQL для получения информации об именованных экземплярах, что кажется недоступным через VPN. Но перед этим проверяет локальные псевдонимы, указано ли там имя хоста. Вы можете добавить его в Диспетчере конфигурации SQL Server - Псевдонимы. Спасательный совет: синхронизируйте 32-битные и 64-битные псевдонимы. Период.
Измените порт обратно на номер порта по умолчанию. Вы ничего не делаете, меняя номер порта, только усложняете себе жизнь.
Немного не связано, но я использовал Double Take, чтобы получить дополнительный уровень репликации SQL Server на уровне всего сервера. В зависимости от требований вашего плана аварийного восстановления это очень хороший вариант. Отработка отказа может быть ручной или полностью автоматизированной и может быть дешевле, чем реализация VM-Ware.