(我在 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) 网络。
有任何想法吗?我已经三重检查了登录详细信息,没有骰子。我缺司机吗?服务器设置很奇怪吗?不知道从这里去哪里。
提前致谢。
你提到你正在使用 SQL Server Management Studio Express,服务器也是 SQL Server Express 吗?
如果是这样,那么从您问题中的堆栈跟踪看来,JDBC 驱动程序正在尝试通过没有 SQL 实例名称的 IP 连接到您的源服务器:
这将是一个默认的 SQL Server 实例。默认情况下,SQL Express 安装了一个名为 SQLEXPRESS 的命名实例,所以我猜测迁移工具包正在寻找一个不存在的 SQL 实例。我不熟悉迁移工具包,但如果我对您的 SQL 实例名称的看法是正确的,您应该确保它正在尝试使用 SERVERNAME\SQLEXPRESS 连接到您的源 SQL 实例(其中 SERVERNAME 是您的 SQL 服务器的主机名)。
编辑:
好的,现在我们显然已经排除了不正确的实例问题......我会说去从 Microsoft 获取最新的 SQL Server jdbc 驱动程序并尝试将它与工具包一起使用。过去,我使用其他驱动程序通过 JDBC 将不同的应用程序连接到 SQL Server 时遇到过问题。我不确定如何让工具包使用不同的驱动程序,但我会帮助查找有关如何使用的帖子/说明。
基于 squillman 的回答 - 通过 TCP/IP 连接时,命名实例使用不同的端口,并且很可能使用“动态端口”(这是 SQLEXPRESS 的默认设置)。查看 SQL Server 2005 网络配置实用程序以确定它正在侦听的端口并连接到该端口而不是 1433。