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

时间:2020-03-06 14:52:57  来源:igfitidea点击:

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

解决方案

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

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

看看http://www.mono-project.com/TDS_Providers和http://www.mono-project.com/SQLClient

我们没有说要对结果数据做什么,但是如果是对开发/维护的一般查询,那么我会认为将远程桌面连接到Windows服务器,然后在其上使用实际的SQL Server工具将一直是相对于Linux本身上所有被黑在一起的解决方案而言,这是一个更具生产力的选择。

pymssql是基于FreeTDS的DB-API Python模块。它为我工作。如果需要,请创建一些辅助函数,然后从Python Shell中使用它。

有一个可用于PHP的抽象库。不确定客户支持什么,但是如果它的Linux确实可以支持使用以下命令构建PHP查询接口:
http://adodb.sourceforge.net/希望对我们有所帮助。

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

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

如果我们使用的是Java,请查看JDBC。

http://msdn.microsoft.com/zh-CN/library/ms378672(SQL.90).aspx

http://en.wikipedia.org/wiki/Jdbc