使用MS SQL Expresslogin:成功! 迁移工具包login:失败?

(在MySQL论坛和StackOverflow上没有任何回复,所以我希望在这里有更好的运气)

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

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

当我启动迁移工具包时,selectMS SQL,并尝试连接,我得到以下错误:

连接到源数据库并检索模式名称。 初始化JDBC驱动程序…驱动程序类MS SQL JDBC驱动程序打开连接… jdbc:jtds:sqlserver:// MYSERVERIP:1433 / MYDATABASE; user = MYUSERNAME; password = MYPASSWORD; charset = utf-8; domain =模式名称无法检索(错误:0)。 ReverseEngineeringMssql.getSchemata:用户“MYUSERNAME”的login失败。 详细信息: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。 sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)sun.reflect.NativeMethodAccessorImpl(方法)sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)sun.reflect.NativeMethodAccessorImpl .invoke(Unknown Source)sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)java.lang.reflect.Method.invoke(Unknown Sourc e)com.mysql.grt.Grt.callModuleFunction(未知来源)

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

提前致谢。

基于squillman的答案 – 通过TCP / IP连接时,命名实例使用不同的端口,并且很可能使用“dynamic端口”(这是SQLEXPRESS的默认设置)。 看看SQL Server 2005networkingconfiguration实用程序来找出它正在侦听哪个端口并连接到,而不是1433。

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

如果是这样,那么从你的问题的堆栈跟踪,它看起来像JDBC驱动程序试图通过IP连接到您的源服务器,没有SQL实例名称:

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的问题。 我不知道如何让工具包使用不同的驱动程序,但我会帮助寻找关于如何这样做的post/说明。