Если обе базы данных находятся в том же экземпляре SQL Server, т.е. используйте то же соединение, этот SQL мог бы быть полезным:
INSERT INTO [DestinationDB].[schema].[table] ([column])
SELECT [column] FROM [OriginDB].[schema].[table]
GO
Я ранее не пробовал (и даже не замечал) команду adb connect
, упомянутую в cmb, но могу подтвердить, что перенаправление TCP-портов самостоятельно - например, через SSH - работает нормально.
Эмулятор прослушивает два порта TCP для каждого экземпляра: 5554 для интерфейса telnet и 5555 для управления обменом данными с такими инструментами, как DDMS. Так что вам, вероятно, удастся обойтись только портом пересылки 5555 (хотя я пока пробовал это только с обоими). Каждый последующий эмулятор принимает следующий доступный кортеж с четным и нечетным номером порта (я думаю, примерно до 5580).
Для справки, я проделал следующие шаги на моем локальном компьютере:
ssh -NL 5554: localhost: 5554 -L 5555: локальный : 5555 myuser @ удаленный сервер
killall adb; adb devices
Я считаю, что эмулятор пытается уведомить локальный сервер adb при запуске; следовательно, необходимо перезапустить adb, чтобы он мог проверить локальные порты 5554+.
Обратите внимание, что localhost
в команде ssh относится к локальному интерфейсу удаленной машины .
adb devices
показал новый эмулятор - emulator-5554
- и я мог использовать его, как если бы он работал на моей локальной машине.
У меня нет второй машины с SDK под рукой, но я заметил, что порты прослушивания эмулятора (по умолчанию 5554, 5555) прослушивают 0.0.0.0
, то есть доступны с удаленных машин, и что adb --help
показывает команда connect
. Я предполагаю, что это заставит его отображаться в устройствах adb
, поэтому команды adb
работают на нем. Для Eclipse попробуйте «Run / Run Configurations ...» и установите для Target значение Manual. Это дает вам «выбор устройства», который, как я предполагаю, будет включать удаленный эмулятор, если к нему подключен adb. Стоит попробовать.
Вот как я решил эту проблему в Windows. Я в значительной степени последовал примеру Кристофера, но я не могу редактировать, поэтому придется дать новый ответ.
Моя проблема заключалась в том, что ADB, как и эмулятор, просто слушал 127.0.0.1, а не 0.0.0.0 для меня. В противном случае я бы использовал TCPMon . Я предполагаю, что это либо другое в Windows, либо изменилось в последних версиях SDK. (Вы можете проверить с помощью netstat -ban
.)
Я установил WinSSHD на машине, на которой запущен эмулятор. (Я считаю, что он также должен работать с freeSSHd, но мне не удалось получить работающий там логин.)
Я открыл порт 22 (TCP) в брандмауэре Windows. (WinSSHD может сделать это за вас.)
Я создал виртуальную учетную запись в графическом интерфейсе WinSSHD.
Я создал новое соединение PuTTY между машиной разработки и машиной-эмулятором и убедился, что могу подключиться.
Затем я настроил туннелирование в PuTTY: Connection -> SSH -> Tunnels
Source port: 5554
Destination: localhost: 5554
Type: Local / Auto
Source port: 5555
] Назначение: localhost: 5555
Тип: Локальный / Авто
(Подключитесь и держите PuTTY открытым, чтобы поддерживать туннель.)
Теперь я запустил эмулятор на удаленной машине и убедился, что ADB там не запущен.
Я перезапустил ADB на машине разработки ( adb kill-server
, затем adb start-server
).
adb devices
и удаленный эмулятор отображались как emulator-5554 device
. Теперь я мог развернуть и запустить свое приложение прямо из Eclipse / ADT, где эмулятор отображался в разделе виртуальных устройств, как если бы это был локальный эмулятор.