Как сделать SQL Server, работающий в Virtual PC, доступным для хост-ОС?
Я использую SQL Server 2008 Express в Windows XP на экземпляре VirtualPC внутри хоста Windows XP. Я хочу иметь возможность подключаться к базам данных на гостевом экземпляре, используя SSMS на хосте. Когда я иду на соединение из SSMS на хосте и просматриваю серверы, я вижу экземпляр SQL Server на гостевой. Тем не менее, когда я пытаюсь подключиться, используя логин аутентификации SQL, я получаю следующую ошибку соединения:
При установке соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (поставщик: сетевые интерфейсы SQL, ошибка: 28 - сервер не поддерживает запрошенный протокол) (Microsoft SQL Server, ошибка: -1)
Я имею:
* попытался соединиться с Name Pipes и TCP / IP
* гарантированно работает служба браузера SQL
* гарантировано, что брандмауэр на гостевой открыт
* сервер настроен на разрешение удаленных подключений (в соответствии со свойствами ядра СУБД в гостевой системе)
Что мне не хватает?
РЕДАКТИРОВАТЬ: Я понял это. Мое разрешение ниже.
4 ответа
САМ ПРИНЯТЫЙ ОТВЕТ
Спасибо за идеи. После долгих хлопот у меня все заработало. Оказалось, что я не заходил в Sql Server Configuration Manager и включал TCP/IP и именованные каналы в качестве сетевых протоколов. Таким образом, хотя SSMS и указала, что удаленные подключения были разрешены, для них не было никакого протокола, кроме общей памяти. После того, как я это сделал, я перезапустил службу SQL Server, но, похоже, что-то не работало должным образом. И все же, как только я перезагрузил гостя и хозяина, все заработало как положено.
Как ваши настройки IP? Вы разделяете один и тот же IP-адрес между двумя компьютерами? Если это так, то, возможно, когда ваши клиенты пытаются подключиться к 10.1.1.10, он попадает на IP-адрес компьютера, на котором размещен экземпляр VPC, и на этом компьютере не запущен экземпляр SQL Server. Если возможно, пусть VPC получит свой IP и попробует это.
В основном перепроверьте, что вы уже сказали,
выключите гостевой брандмауэр, чтобы убедиться, что это не так.
Убедитесь, что в сети вашей виртуальной машины установлен мост, а не NAT.
Попробуйте подключиться к IP-адресу гостя вместо его имени.
Убедитесь, что удаленные подключения разрешены сервером SQL, и что и клиент, и сервер используют tcp/ip (или именованные каналы, если вы предпочитаете).
Я не знаю, требует ли для включения удаленных подключений перезапуск сервера SQL.
Попробуйте использовать проверку подлинности SQL, чтобы устранить проблему проверки подлинности. Вы работаете в домене?
Чтобы добавить некоторые шаги, которые явно не упоминались выше, в моем опыте работало то, что я настроил сеть виртуального ПК для моего физического сетевого адаптера.
Затем отключил брандмауэр Windows для общего профиля.
Надеюсь, на самом деле может заблокировать это до порта 1433.
Кроме того, в гостевой ОС, если SQL Server установлен только с аутентификацией Windows, вы позже добавите аутентификацию SQL, обратите внимание, что по умолчанию "sa" отключен для входа в систему. Либо "разрешите" вход в систему для "sa", либо (лучшая идея) создайте вход в систему с соответствующими разрешениями по мере необходимости.