如何从非域注册的 Linux 机器使用 SQuirreL SQL 连接到 SQL Server?

Posted

技术标签:

【中文标题】如何从非域注册的 Linux 机器使用 SQuirreL SQL 连接到 SQL Server?【英文标题】:how to connect to SQL Server with SQuirreL SQL from non domain registered Linux box? 【发布时间】:2012-02-29 23:32:17 【问题描述】:

我需要从未在我公司域中注册的 Linux 机器连接到 SQL 2008 R2 服务器。我正在尝试使用 SQuirreL SQL 版本 3.2.1。 我下载了Microsoft SQL Server JDBC Driver 3.0 并将其分配给驱动程序选项卡上的 SQuirreL。

现在,当我尝试在 SQuirreL 上创建别名时,我选择 SQL Server 驱动程序并调整 URL。对于凭据,我使用我的域注册用户名和密码。

当我尝试测试连接时,我总是遇到同样的错误:

: 用户 '\' 登录失败。

我怎样才能让它工作?提前致谢!

【问题讨论】:

【参考方案1】:

我摆脱了 Microsoft SQL Server JDBC 驱动程序并下载了jTDS 驱动程序。我对其进行了一些调整,直到最终成功连接。正确的连接字符串是:

jdbc:jtds:sqlserver://<server_ip>:1433;databaseName=<instance_name>;domain=<domain_name>

【讨论】:

我花了大约 2 个小时试图建立联系。 jTDS 5 分钟后,它工作了。谢谢。【参考方案2】:

答案可能已经过时,因为我在 MacOS 10.9.3 而不是 Linux 机器上遇到了与 SQuirrel SQL 类似的问题。彼得解决问题的方式启发了我。由于解决方案不是最简单的,我决定把它放在这里。希望它可以帮助某人。

    下载最新的 Microsoft JDBC Driver 4.0 for SQL Server(tar.gz 包) 仅从包中提取 sqljdbc4.jar 将jar文件复制到Squirrel SQL (Contents->Resources->Java->Lib) 现在 Microsoft MSSQL Server JDBC Driver 可用于创建别名 连接 URL:jdbc:sqlserver://SERVERNAME;databaseName=DATABASENAME

【讨论】:

以防万一发生在其他人身上... MS 驱动程序下载页面,当通过 https 访问时,无法在 Chrome 中开始下载(截至撰写时为 44)。要开始下载,请转到 http 页面并重试。【参考方案3】:

另一个对我有用的解决方案。在连接到 SQL Server 2008 R2 的 Windows 桌面上,我必须按照以下步骤操作:

jtds-1.3.1.jar复制到SQuirrel SQL \lib目录中 重新启动 SQuirrel SQL 并检查您是否在驱动程序列表中看到 jTDS Microsoft SQL 确保在驱动程序配置中类名指定net.sourceforge.jtds.jdbc.Driver 使用这样的连接字符串

jdbc:jtds:sqlserver://&lt;hostnameOrIp&gt;:&lt;port&gt;/&lt;databaseName&gt;;instance=&lt;instanceName&gt;

【讨论】:

这个解决方案对我来说是最简单的。我只想补充一点,您需要获取 jtds 的副本。目前(2018 年 10 月)托管在 SourceForge 如图所示更改驱动程序配置类名称时,出现错误-在 Java 类路径和 jTDS Microsoft 的 Extra 类路径中都找不到类 net.sourceforge.jtds.jdbc.Driver SQL 驱动定义:java.lang.ClassNotFoundException: net.sourceforge.jtds.jdbc.Driver.【参考方案4】:

我设法从 SQuirrel 在 linux 机器上连接到 SQL Server。粗略的*步骤...

您只需要 MS 下载的 jdbc jar 之一(复制到“lib”) 必须使用 SQL Server 身份验证(不是 Windows 网络身份验证) 我们的数据库上已经启用了 SQL Server 身份验证 添加了登录“jdoe” 将 jdoe 默认数据库设置为“XxxDb” 添加了从 jdoe 到所需数据库的“用户映射” 在 SQL Server 上为 jdoe 设置权限:“连接”和“查看任何数据库” 连接字符串:jdbc:sqlserver://SERVERNAME:1433;databaseName=XxxDb

* 我四处寻找可能不需要所有的东西

【讨论】:

【参考方案5】:

要连接到 MS SQL Server,您需要获取 JDBC 驱动程序:

Download latest Microsoft JDBC Driver 选择下载.tar.gz包 解压包 在 Squirrel-SQL 中单击窗口左侧的驱动程序选项卡 右击Microsoft MSSQL Server JDBC Driver并选择Modify Driver... 点击Extra Class Path 点击Add 浏览到sqljdbc41.jar 所在的位置(它应该在sqljdbc_4.1/enu/jre7/sqljdbc41.jar 或类似目录下)并单击Open 点击OK 现在在驱动程序列表中Microsoft MSSQL Server JDBC Driver 的左侧应该有一个复选标记,表示您正确安装了驱动程序

要连接到 MS SQL Server:

点击窗口左侧的Aliases 标签 点击+标志Create a new Alias 输入新连接的名称 在 URL 文本框中粘贴 JDBC 连接字符串(例如,Azure 在连接字符串下提供给您) 输入用户名和密码 点击测试看看能否建立连接 如果测试成功,则点击OK 以完成创建连接

如果您在连接到 Azure SQL 数据库时遇到任何问题,您可能需要授予对特定 IP 的访问权限以连接到它或一些类似的访问权限。

【讨论】:

【参考方案6】:

确保 Microsoft jdbc 驱动程序与您使用的 java 运行时版本兼容,

我尝试将 Driver 6.0 与 java-9 一起使用,但出现此错误: ClassNotFoundException:javax.xml.bind.DatatypeConverter 当我降级到版本 Java SE Runtime Environment 8u101 它连接没有问题。

【讨论】:

以上是关于如何从非域注册的 Linux 机器使用 SQuirreL SQL 连接到 SQL Server?的主要内容,如果未能解决你的问题,请参考以下文章

从非域计算机连接到域 SQL Server 2005

C# ActiveDirectory - 如何将本地用户帐户从加入域的计算机远程添加到非域计算机

SQL2008非域环境直接使用WINDOWS登录的镜像设置

如何从非 DPC 应用程序获取托管配置?

我应该如何从非 root Debian Linux 守护进程登录?

如何从非托管 COM dll 生成类型库