使用MS SQL Express登录:成功! Migration Toolkit登录:失败?

时间:2009-06-15 16:52:19

标签: mysql sql-server migration database-migration

(我在MySQL论坛上的相同帖子没有回复,所以我希望在这里有更好的运气)

我正在尝试为朋友迁移MS SQL数据库。我没有对机器的物理访问权限,也没有管理员权限 - 只是一个读/写用户。

在XP中使用“SQL Server Management Express”,我可以使用IP /用户/密码轻松登录。我可以浏览表格,运行查询。容易。

当我启动Migration toolkit时,选择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(母语   方法)   sun.reflect.NativeMethodAccessorImpl.invoke(未知   资源)   sun.reflect.DelegatingMethodAccessorImpl.invoke(未知   资源)   java.lang.reflect.Method.invoke(未知   资源)   com.mysql.grt.Grt.callModuleFunction(未知   源)

     

有什么想法吗?我已经三次检查登录详细信息,没有骰子。我错过了司机吗?服务器设置是否奇怪?不知道从哪里开始。

提前致谢。

更新 我下载并运行dbVisualizer(也使用JDBC)并使用相同的SQL身份验证信息连接正常...这告诉我它不是服务器,并且没有花哨的MSFT内容。

虽然不知道接下来要做什么......

4 个答案:

答案 0 :(得分:3)

我知道,有一个博客的错误描述几乎相同

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事件探查器,然后运行您的工具,看看它尝试执行哪些查询以及那里发生了哪些SQL或安全异常(如果任何)

答案 1 :(得分:0)

检查您的SQL服务器是否“监听”ip,tcp协议和端口1433。

尝试执行

telnet server_ip_addres 1433

如果telnet窗口将被关闭 - SQL服务器不会监听ip,端口或tcp。如果您可以访问“SQL Server配置管理”或服务器的注册表,则可以直观地查找信息(配置管理 - 协议,TCP / IP,IP地址,端口)并根据需要更正连接字符串。以防jdbc驱动程序link to doc正在使用。

答案 2 :(得分:0)

我认为缺少特定数据库或SQL Server表的权限。 dts迁移前一段时间我遇到了同样的问题。

用户需要对MSDB或sysdtspackag表的读取权限。

我认为您的问题类似于“无法检索架构名称列表”可能您的用户对某些系统表的权限不足。

答案 3 :(得分:0)

您的连接字符串是否在参数值中包含特殊(非字母数字)字符?如果是这样,请尝试对其进行urlencoding(例如/ =>%2f)和/或将它们括在大括号{}中。