使用 MS SQL Express 登录:成功!迁移工具包登录:失败?

使用 MS SQL Express 登录:成功!迁移工具包登录:失败?

(我在 MySQL 论坛和 StackOverflow 上发表的相同帖子没有得到任何回复,所以我希望在这里能有更好的运气)

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

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

当我启动迁移工具包、选择 MS SQL 并尝试连接时,出现以下错误:

连接到源数据库并检索模式名称。初始化 JDBC 驱动程序...驱动程序类 MS SQL JDBC 驱动程序打开连接...连接 jdbc:jtds:sqlserver://MYSERVERIP:1433/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.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(未知 来源)

有什么想法吗?我检查了三次登录详细信息,但毫无头绪。我是不是缺少驱动程序?服务器设置很奇怪吗?不知道接下来该怎么办。

提前致谢。

答案1

基于 squillman 的回答 - 当通过 TCP/IP 连接时,命名实例使用不同的端口,并且最有可能使用“动态端口”(这是 SQLEXPRESS 的默认端口)。查看 SQL Server 2005 网络配置实用程序,找出它正在侦听哪个端口,然后连接到该端口而不是 1433。

答案2

您提到您正在使用 SQL Server Management Studio Express,该服务器也是 SQL Server Express 吗?

如果是这样,那么从问题的堆栈跟踪来看,JDBC 驱动程序似乎正在尝试通过没有 SQL 实例名称的 IP 连接到源服务器:

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

这将是默认的 SQL Server 实例。默认情况下,SQL Express 会安装一个名为 SQLEXPRESS 的命名实例,因此我猜测迁移工具包正在寻找不存在的 SQL 实例。我不熟悉迁移工具包,但如果我对您的 SQL 实例名称的判断正确,您应该确保它尝试使用 SERVERNAME\SQLEXPRESS(其中 SERVERNAME 是您的 SQL 服务器的主机名)连接到您的源 SQL 实例。

编辑:

好的,现在我们显然已经排除了错误实例问题......我会说去得到Microsoft 的最新 SQL Server jdbc 驱动程序并尝试将其与工具包一起使用。过去,我曾遇到过使用其他驱动程序通过 JDBC 将不同应用程序连接到 SQL Server 的问题。我不确定如何让工具包使用不同的驱动程序,但我会帮助查找有关如何操作的帖子/说明。

相关内容