Назад | Перейти на главную страницу

Вход с помощью MS SQL Express: Успех! Вход в Migration Toolkit: сбой?

(нет ответов на мой идентичный пост на форумах MySQL и StackOverflow, поэтому я надеюсь, что здесь повезет больше)

Я пытаюсь перенести базу данных MS SQL для друга. У меня нет физического доступа к машине, и у меня нет доступа администратора - только пользователь для чтения / записи.

Используя «SQL Server Management Express» в XP, я могу легко войти в систему, используя IP / имя пользователя / пароль. Я могу просматривать таблицы, выполнять запросы. Легко.

Когда я запускаю инструментарий миграции, выбираю MS SQL и пытаюсь подключиться, я получаю следующую ошибку:

Подключение к исходной базе данных и получение имен схем. Инициализация драйвера JDBC ... Класс драйвера MS SQL Драйвер JDBC Открытие соединения ... Соединение jdbc: jtds: sqlserver: // MYDATABASE; user = MYUSERNAME; password = MYPASSWORD; charset = utf-8; domain = Список имен схем не удалось получить (ошибка: 0). ReverseEngineeringMssql.getSchemata: не удалось войти в систему для пользователя MYUSERNAME. Подробности: net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic (SQLDiagnostic.java:365) net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken (TdsCore.java:2781) net.sourceforge.c.jtdsCore.jdb TdsCore.java:2224) net.sourceforge.jtds.jdbc.TdsCore.login (TdsCore.java:599) net.sourceforge.jtds.jdbc.ConnectionJDBC2. (ConnectionJDBC2.java:331) net.sourceforge.jtds.JDBCConnection . (ConnectionJDBC3.java:50) net.sourceforge.jtds.jdbc.Driver.connect (Driver.java:178) java.sql.DriverManager.getConnection (Неизвестный источник) java.sql.DriverManager.getConnection (Неизвестный источник) com. mysql.grt.modules.ReverseEngineeringGeneric.establishConnection (ReverseEngineeringGeneric.java:141) com.mysql.grt.modules.ReverseEngineeringMssql.getSchemata (ReverseEngineeringMssql.java:99) Sun. .invoke (Неизвестный источник) sun.reflect.DelegatingMethodAccessorImpl.invoke (Неизвестный источник) java.lang.reflect.Method.invoke (Неизвестный источник д) com.mysql.grt.Grt.callModuleFunction (Неизвестный источник)

Любые идеи? Я трижды проверил данные для входа, никаких кубиков. Мне не хватает драйвера? Странная настройка сервера? Не знаю, куда идти дальше.

Заранее спасибо.

Вы упомянули, что используете SQL Server Management Studio Express, является ли сервер также SQL Server Express?

Если это так, то из трассировки стека в вашем вопросе похоже, что драйвер JDBC пытается подключиться к вашему исходному серверу по IP без имени экземпляра SQL:

Connection jdbc:jtds:sqlserver://MYSERVERIP:1433/MYDATABASE;user=MYUSERNAME;password=MYPASSWORD;charset=utf-8;domain=

который будет экземпляром SQL Server по умолчанию. По умолчанию SQL Express устанавливает именованный экземпляр с именем SQLEXPRESS, поэтому я предполагаю, что инструментарий миграции ищет несуществующий экземпляр SQL. Я не знаком с набором инструментов миграции, но если я прав насчет имени вашего экземпляра SQL, вы должны убедиться, что он пытается подключиться к вашему исходному экземпляру SQL с помощью SERVERNAME \ SQLEXPRESS (где SERVERNAME - имя хоста вашего SQL-сервера).

РЕДАКТИРОВАТЬ:

Хорошо, теперь, когда мы, очевидно, исключили некорректную проблему с экземпляром ... Я бы сказал, идите и получите новейший драйвер jdbc для SQL Server от Microsoft и попробуйте использовать его с инструментарием. В прошлом у меня были проблемы с подключением разных приложений через JDBC к SQL Server с использованием других драйверов. Я не уверен, как заставить инструментарий использовать другой драйвер из головы, но я помогу найти сообщения / инструкции о том, как это сделать.

Основываясь на ответе Сквиллмана - при подключении по TCP / IP названные экземпляры используют разные порты и, скорее всего, используют «динамические порты» (что по умолчанию для SQLEXPRESS). Взгляните на служебную программу настройки сети SQL Server 2005, чтобы выяснить, какой порт она прослушивает, и подключиться к нему вместо 1433.