从Linux访问Microsoft SQL Server有哪些方法?
我们有一台运行SQL Server 2005的Windows计算机,我们需要能够在Linux机器上对其运行一些数据库查询。 建议采取哪些方法? 理想情况下,我们需要类似于Windows上的sqlcmd的命令行实用程序。
cwick asked 2020-02-14T11:27:44Z
13个解决方案
31 votes
FreeTDS + unixODBC或iODBC
首先安装FreeTDS,然后将两个ODBC引擎之一配置为使用FreeTDS作为其ODBC驱动程序。 然后使用ODBC引擎的命令行界面。
unixODBC具有isql,iODBC具有iodbctest
您还可以使用自己喜欢的编程语言(我已经成功地使用Perl,C,Python和Ruby连接到MSSQL)
我个人使用的是FreeTDS + iODBC:
$more /etc/freetds/freetds.conf
[10.0.1.251]
host = 10.0.1.251
port = 1433
tds version = 8.0
$ more /etc/odbc.ini
[ACCT]
Driver = /usr/local/freetds/lib/libtdsodbc.so
Description = ODBC to SQLServer via FreeTDS
Trace = No
Servername = 10.0.1.251
Database = accounts_ver8
Vinko Vrsalovic answered 2020-02-14T11:28:11Z
16 votes
sql-cli是用于SQL Server的基于nodejs的跨平台命令行界面。 您可以通过npm [https://www.npmjs.org/package/sql-cli]进行安装
它可以同时连接到本地实例和SQL Azure实例。
Muhammad Hasan Khan answered 2020-02-14T11:28:35Z
10 votes
sqsh([http://www.sqsh.org/)] + freetds([http://www.freetds.org)]
sqsh主要是Sybase SQL Server(现为ASE)的isql替代品,但它可以很好地用于连接到SQL Server(前提是您使用freetds)。
要进行编译,只需将$ SYBASE指向freetds install,它应该可以从那里工作。 我整天在Mac上使用它。
sqsh最好的部分是高级功能,例如简单的死服务器链接(无需在SQL Server中设置链接服务器),流控制和循环(不再连接字符串和执行动态SQL)以及不可见的批量复制/加载 。
使用任何其他命令行工具的人简直是疯了! :)
Matt Rogish answered 2020-02-14T11:29:13Z
6 votes
pymssql是基于FreeTDS的DB-API Python模块。 它为我工作。 如果需要,请创建一些辅助函数,然后从Python Shell中使用它。
Constantin answered 2020-02-14T11:29:36Z
5 votes
Mono包含应该为您执行此操作的ADO.NET提供程序。 我不知道是否有命令行实用程序,但是如果没有,您可以打包一些C#进行查询。
看看[http://www.mono-project.com/TDS_Providers]和[http://www.mono-project.com/SQLClient]
SteinNorheim answered 2020-02-14T11:30:05Z
4 votes
自2011年11月起,Microsoft提供了自己的适用于Linux的SQL Server ODBC驱动程序,用于Red Hat Enterprise Linux(RHEL)和SUSE Linux Enterprise Server(SLES)。
在Red Hat Linux上为SQL Server下载Microsoft ODBC Driver 11
在SUSE-CTP上为SQL Server下载Microsoft ODBC Driver 11
Linux文档上的ODBC驱动程序
它还包括用于Linux的sqlcmd。
mleu answered 2020-02-14T11:30:45Z
3 votes
如果您使用Java,请查看JDBC。
[http://msdn.microsoft.com/en-us/library/ms378672(SQL.90).aspx]
[http://en.wikipedia.org/wiki/Jdbc]
borjab answered 2020-02-14T11:31:13Z
2 votes
您没有说要对结果数据做什么,但是如果是对开发/维护的一般查询,那么我会认为将远程桌面连接到Windows服务器,然后在其上使用实际的SQL Server工具将一直是 相对于Linux本身上所有被黑的解决方案而言,这是一个更具生产力的选择。
Cruachan answered 2020-02-14T11:31:34Z
2 votes
有一个可用于PHP的抽象库。 不确定您的客户支持什么,但是如果它的Linux确实可以支持使用以下方式构建PHP查询接口:[http://adodb.sourceforge.net/]希望对您有所帮助。
Taptronic answered 2020-02-14T11:31:54Z
0 votes
我对freetds解决方案不满意,这就是为什么我编写了一个类(命令历史记录,表和字段的自动完成等)的原因
[http://www.phpclasses.org/package/8168-PHP-Use-ncurses-to-get-key-inputs-and-write-shell-text.html]
François Neumann-rystow answered 2020-02-14T11:32:19Z
0 votes
valentina-db它具有针对SQL Server的免费版本
.rpm和.deb
注册后将通过电子邮件发送序列号
[https://www.valentina-db.com/en/]
[https://valentina-db.com/en/store/category/14-free-products]
mohsen.nour answered 2020-02-14T11:32:59Z
0 votes
如果使用eclipse,则可以在其上安装Data Tools Platform插件,并将其用于包括MS SQLServer在内的每个数据库引擎。 它只需要获取该数据库引擎的JDBC驱动程序即可。
Mehdi answered 2020-02-14T11:33:20Z
0 votes
现在有一个不错的基于CLI的工具可以访问MSSQL数据库。
它称为pip,与postgres的sudo有点类似。
Github存储库页面
例如,通过pip安装(全局安装,对于本地用户则省略sudo部分):
sudo pip install mssql-cli
helvete answered 2020-02-14T11:33:53Z