Я пытаюсь подключить одну из наших клиентских программ «как есть» к удаленной базе данных вместо локальной, они думают, что они закодировали ее для работы таким образом, но по какой-то причине программа вылетает при попытке подключиться к удаленной база данных. У меня нет исходного кода, поэтому я не могу копать намного глубже, а компания не предоставляет никаких обновлений или пользовательских модификаций. Я могу успешно подключиться к базе данных через SqlDbx и HeidiSQL, поэтому я знаю, что сервер настроен правильно.
Вот почему мне нужно найти способ подделать удаленное соединение на порту 1433, чтобы оно выглядело как соединение локальной базы данных с программой. Я думал о редактировании файла hosts, но, скорее всего, это приведет к сбою других программ, если я привяжу localhost к другому IP-адресу, чем 127.0.0.1.
Любые идеи?
ОБНОВИТЬ:
Я пробовал решить это другими способами, как предлагалось, но я перепробовал все, что мог придумать.
Единственное, что я вижу, это то, что что-то ограничивает его изнутри кода, над которым я не могу повлиять.
По сути, вы пытаетесь обойти то, что кажется чужой плохой реализацией. Мне это кажется разумным, а иногда и необходимостью. Если эта программа действительно "дает сбой" при попытке подключиться к одной базе данных, но не к другой, в отличие от, о, вы знаете, отображения сообщения об ошибке, это довольно слабый момент.
У меня есть резервное решение для этого в Linux ("redir") ... но не в Windows; однако я нашел это на машине Google:
http://www.vakuumverpackt.de/tcptunnel/
Я только что протестировал его с версией "Cygwin" - установка не требуется, у него есть exe и DLL, и он "просто работал" на моем ноутбуке с Windows 7. Аккуратный маленький бонус, у него есть --log-to-stdout
вариант, который в сочетании с >
в файл, записывает байты, полученные из потока (может быть интересно читать). У меня не было под рукой SQL Server, но я тестировал его с некоторыми другими службами TCP, и, похоже, он работает так, как задумано - он прослушивает локальный сокет, и когда приходят соединения, он устанавливает соединение с назначенным сокетом на удаленная машина и связывает концы труб вместе. Слушая 1433, он «должен» сделать свое дело.
Во всяком случае, это входит в мой набор инструментов.
Хотя вы, безусловно, можете использовать такие методы, как Перенаправление портов SSH чтобы удаленный прослушивающий TCP-сокет выглядел как локальный, это, вероятно, не поможет.
Если ваш клиент "дает сбой" при подключении, он, скорее всего, не перестанет делать это только потому, что вы используете другой IP-адрес назначения.
Может быть множество причин, по которым программное обеспечение работает нормально при подключении к локальной базе данных, но создает проблемы с удаленной базой данных, включая, помимо прочего,
Вам следует направить свои усилия на диагностику проблемы, а не на сомнительные попытки ее решения.