如何从非域注册的 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://<hostnameOrIp>:<port>/<databaseName>;instance=<instanceName>
【讨论】:
这个解决方案对我来说是最简单的。我只想补充一点,您需要获取 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?的主要内容,如果未能解决你的问题,请参考以下文章
C# ActiveDirectory - 如何将本地用户帐户从加入域的计算机远程添加到非域计算机