2009-06-15 66 views
1

(在MySQL论坛上没有回复我的同一帖子,所以我希望能在这里有更好的运气)使用MS SQL Express登录:成功!迁移工具包登录:失败?

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

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

当我火了迁移工具包,选择MS SQL和尝试连接时,我得到以下错误:

---- Connecting to source database and retrieve schemata names. Initializing JDBC driver ... Driver class MS SQL JDBC Driver Opening connection ... Connection jdbc:jtds:sqlserver://MYSERVERIP:1433/MYDATABASE;user=MYUSERNAME;password=MYPASSWORD;charset=utf-8;domain= The list of schema names could not be retrieved (error: 0). ReverseEngineeringMssql.getSchemata :Login failed for user 'MYUSERNAME'. Details: 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(Unknown Source) java.sql.DriverManager.getConnection(Unknown Source) com.mysql.grt.modules.ReverseEngineeringGeneric.establishConnection(ReverseEngineeringGeneric.java:141) com.mysql.grt.modules.ReverseEngineeringMssql.getSchemata(ReverseEngineeringMssql.java:99) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) java.lang.reflect.Method.invoke(Unknown Source) com.mysql.grt.Grt.callModuleFunction(Unknown Source)


任何想法?我三重检查了登录细节,没有骰子。我错过了一个驱动程序?服务器设置是否奇怪?不知道该从哪里出发。

在此先感谢。

UPDATE: 我下载并使用相同的SQL身份验证信息......这告诉我这是不是服务器,而且也没有花哨的东西MSFT回事跑DBVisualizer中(也使用JDBC)和连接的罚款。

仍然不知道下一步怎么办,虽然...

回答

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或安全例外情况的存在(如任何)

0

检查您的SQL服务器 “听” IP,TCP协议和端口1433

尝试执行

telnet server_ip_addres 1433 

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

+0

嘿Foxy,谢谢你的回复。 1433是开放和倾​​听。 (使用上面的telnet字符串确认,并与管理员核对)。 – jmccartie 2009-06-18 02:52:23

+0

1.您的SQL是否以“混合模式”(基于用户名/密码的身份验证)工作?该模式暗示您的连接字符串(http://msdn.microsoft.com/en-us/library/ms143705.aspx)。 2.您是否连接到默认实例(隐含在连接字符串中)或命名实例(http://msdn.microsoft.com/en-us/library/ms143744(SQL.90).aspx)? – FoxyBOA 2009-06-18 05:20:28

+0

1)允许用户名/密码auth - 这是我使用SQL Management和dbVisualizer进行连接的方式。 2)打印@@服务器名返回“专用” – jmccartie 2009-06-18 17:11:18

0

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

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

我认为你的问题是类似的“模式名称列表无法检索”也许你的用户在某些系统表上的权限不足。

0

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