(我在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内容。
虽然不知道接下来要做什么......
答案 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)和/或将它们括在大括号{}
中。