从Linux访问Microsoft SQL Server有哪些方法?

时间:2008-09-29 16:09:25

标签: sql-server

我们有一台运行SQL Server 2005的Windows机器,我们需要能够从Linux机器上运行一些数据库查询。有哪些建议的方法可以做到这一点?理想情况下,我们需要一个类似于Windows上的sqlcmd的命令行实用程序。

15 个答案:

答案 0 :(得分:31)

FreeTDS + unixODBCiODBC

首先安装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

答案 1 :(得分:15)

sql-cli是sql server的基于nodejs的跨平台命令行界面。您可以通过npm https://www.npmjs.org/package/sql-cli

安装它

它可以连接到内部部署和sql azure实例。

答案 2 :(得分:10)

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),以及不可见的批量复制/负荷。

任何使用任何其他命令行工具的人都疯了! :)

答案 3 :(得分:6)

pymssql是一个基于FreeTDS的DB-API Python模块。它对我有用。如果需要,创建一些辅助函数,并从Python shell中使用它。

答案 4 :(得分:5)

Mono包含一个应该为您执行此操作的ADO.NET提供程序。我不知道是否有一个命令行实用程序,但如果没有,你肯定可以包装一些C#来进行查询。

查看http://www.mono-project.com/TDS_Providershttp://www.mono-project.com/SQLClient

答案 5 :(得分:4)

November 2011以来,Microsoft为Red Hat Enterprise Linux(RHEL)和SUSE Linux Enterprise Server(SLES)提供了自己的SQL Server ODBC Driver for Linux

它还包括用于Linux的sqlcmd

答案 6 :(得分:3)

答案 7 :(得分:2)

你没有说你想对结果数据做什么,但如果它是开发/维护的一般查询,那么我会想到远程桌面到Windows服务器然后使用他们想要的实际SQL Server工具对于Linux本身的任何黑客攻击解决方案而言,它总是一个更高效的选择。

答案 8 :(得分:2)

PHP有一个抽象库。不确定你的客户端盒子会支持什么,但是如果它的Linux当然应该支持用这个构建一个PHP查询接口: http://adodb.sourceforge.net/希望能帮到你。

答案 9 :(得分:0)

我对freetds解决方案不满意, 这就是为什么我编写了一个类(命令历史,表和字段的自动完成等)

http://www.phpclasses.org/package/8168-PHP-Use-ncurses-to-get-key-inputs-and-write-shell-text.html

答案 10 :(得分:0)

valentina-db 它有免费版本的sql server
.rpm和.deb
 序列号将在注册后通过电子邮件发送

https://www.valentina-db.com/en/

https://valentina-db.com/en/store/category/14-free-products

valentina-db

答案 11 :(得分:0)

如果使用eclipse,则可以在其上安装Data Tools Platform插件,并将其用于包括MS SQLServer在内的每个数据库引擎。只需为该数据库引擎获取JDBC驱动程序即可。

答案 12 :(得分:0)

有一个很好的基于CLI的工具,用于访问 now 的MSSQL数据库。

它叫做mssql-cli,有点类似于postgres的psql

Gihub repository page

例如通过pip安装(全局安装,对于本地安装则省略sudo部分)

sudo pip install mssql-cli

答案 13 :(得分:0)

我想推荐Sqlectron。除了根据MIT许可开放源代码外,Electron还促进了多平台的发展。它自己的定义是:

具有跨数据库和平台支持的简单轻巧的SQL客户端桌面

它是currently supports PostgreSQL,MySQL,MS SQL Server,Cassandra和SQLite。

答案 14 :(得分:0)

令人惊讶的是,没有人提到这一点,与其他答案似乎暗示的相反,FreeTDS 就是您所需要的。不需要 unixODBC、iODBC 或其他任何东西。

<块引用>

在 Windows 上运行一些数据库查询 [...] 类似于 sqlcmd 的命令行实用程序

tsql 执行此操作并且是 FreeTDS 包的一部分(与 freebcp 和其他实用程序一样)。 tsql 没有花哨的用户界面,但如果您想要一个轻便、实用且高性能的命令行实用程序,它会做得很好。

参见例如How to run a SQL script in tsql

简单来说,我的意思是小于 500kb(可能小于 60k,具体取决于它的编译方式),而且据我所知,内存和 CPU 非常高效。