我们有一台运行SQL Server 2005的Windows机器,我们需要能够从Linux机器上运行一些数据库查询。有哪些建议的方法可以做到这一点?理想情况下,我们需要一个类似于Windows上的sqlcmd的命令行实用程序。
答案 0 :(得分:31)
首先安装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_Providers和http://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)
如果您使用的是Java,请查看JDBC。
http://msdn.microsoft.com/en-us/library/ms378672(SQL.90).aspx
答案 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/
答案 11 :(得分:0)
如果使用eclipse,则可以在其上安装Data Tools Platform插件,并将其用于包括MS SQLServer在内的每个数据库引擎。只需为该数据库引擎获取JDBC驱动程序即可。
答案 12 :(得分:0)
有一个很好的基于CLI的工具,用于访问 now 的MSSQL数据库。
它叫做mssql-cli
,有点类似于postgres的psql
。
例如通过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 非常高效。