Войти с помощью MS SQL Express: успех! Вход в Migration Toolkit: сбой? - PullRequest
1 голос
/ 15 июня 2009

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

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

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

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

---- Подключение к исходной базе данных и получение имен схем. Инициализация Драйвер JDBC ... Класс драйвера MS SQL Драйвер JDBC Открытие соединения ... соединение JDBC: jtds: SQLServer: // MYSERVERIP: 1433 / MyDatabase; пользователь = MyUserName, пароль = MyPassword, кодировка = UTF-8; домен = Список имен схем не может быть извлечено (ошибка: 0). ReverseEngineeringMssql.getSchemata : Ошибка входа пользователя 'MYUSERNAME'. Подробности: net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic (SQLDiagnostic.java:365) net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken (TdsCore.java:2781) net.sourceforge.jtds.jdbc.TdsCore.nextToken (TdsCore.java:2224) net.sourceforge.jtds.jdbc.TdsCore.login (TdsCore.java:599) net.sourceforge.jtds.jdbc.ConnectionJDBC2. (ConnectionJDBC2.java:331) net.sourceforge.jtds.jdbc.ConnectionJDBC3. (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.reflect.NativeMethodAccessorImpl.invoke0 (Native Метод) sun.reflect.NativeMethodAccessorImpl.invoke (Неизвестно Источник) sun.reflect.DelegatingMethodAccessorImpl.invoke (Неизвестно Источник) java.lang.reflect.Method.invoke (Неизвестно Источник) com.mysql.grt.Grt.callModuleFunction (Неизвестно Источник)


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

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

UPDATE: Я скачал и запустил dbVisualizer (который также использует JDBC) и подключился нормально, используя ту же самую информацию об аутентификации SQL ... это говорит мне, что это не сервер, и нет никаких причудливых вещей в MSFT.

Все еще не знаю, что делать дальше, хотя ...

Ответы [ 4 ]

3 голосов
/ 23 июня 2009

Я вижу, есть блог с почти таким же описанием ошибки

http://house9.blogspot.com/2007/12/mysql-migration-toolkit.html

Также для запуска инструмента вам нужны права доступа

мастер INFORMATION_SCHEMA

Я бы предложил выполнить запрос (это должен сделать ваш администратор)

use [master]
GO
GRANT SELECT ON SCHEMA::[INFORMATION_SCHEMA] TO [MYUSERNAME]
GO
use [master]
GO
GRANT VIEW DEFINITION ON SCHEMA::[INFORMATION_SCHEMA] TO [MYUSERNAME]
GO

Наконец, если вы предоставили эти права, но у вас есть та же ошибка, попросите системного администратора запустить SQL Profiler, затем запустите инструмент и посмотрите, какие запросы он пытается выполнить и какие исключения SQL или безопасности происходят там (если есть)

0 голосов
/ 22 июня 2009

Я думаю, что отсутствуют права на конкретную базу данных или таблицу SQL Server. У меня была такая же проблема некоторое время назад с миграцией DTS.

Пользователю необходимы права на чтение таблиц MSDB или sysdtspackag.

Я думаю, что ваша проблема похожа "Список имен схем не может быть получен", возможно, у вашего пользователя недостаточно прав на некоторые системные таблицы.

0 голосов
/ 23 июня 2009

Содержит ли ваша строка подключения специальные (не буквенно-цифровые) символы в значениях параметров? Если это так, попробуйте их кодировать (например, / =>% 2f) и / или заключить в скобки {}.

0 голосов
/ 18 июня 2009

Убедитесь, что ваш SQL-сервер "слушает" ip, tcp протокол и порт 1433.

Попробуйте выполнить

telnet server_ip_addres 1433

Если окно telnet будет закрыто - сервер SQL не прослушивает ip, порт или tcp. Если у вас есть доступ к «Управлению конфигурацией SQL Server» или реестру сервера, вы можете визуально найти информацию (Управление конфигурацией - Протоколы, TCP / IP, IP-адреса, порт) и при необходимости исправить строку подключения. На всякий случай ссылка на doc драйвера jdbc, который вы используете.

...