【问题标题】:What are some ways of accessing Microsoft SQL Server from Linux?从 Linux 访问 Microsoft SQL Server 的方法有哪些?
【发布时间】:2010-09-14 01:05:22
【问题描述】:

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

【问题讨论】:

    标签: sql-server


    【解决方案1】:

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

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

    tsql 执行此操作,并且是 FreeTDS 软件包的一部分(freebcp 和其他实用程序也是如此)。 tsql 没有花哨的用户界面,但如果你想要一个轻量级、功能性和高性能的命令行实用程序,它就可以了。

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

    顺便说一下,我的意思是小于 500kb(可能小于 60k,具体取决于它的编译方式),据我所知,内存和 CPU 效率极高。

    【讨论】:

      【解决方案2】:

      我想推荐Sqlectron。除了在 MIT 许可下开源之外,它还受到 Electron 的多平台支持。它自己的定义是:

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

      currently supports PostgreSQL、MySQL、MS SQL Server、Cassandra 和 SQLite。

      【讨论】:

      • 有点麻烦,但它很简单,而且很有效。还支持许多 linux 发行版。谢谢
      【解决方案3】:

      现在有一个不错的基于 CLI 的工具用于访问 MSSQL 数据库

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

      Gihub repository page

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

      sudo pip install mssql-cli
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

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

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

          【讨论】:

            【解决方案6】:

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

            它还包括用于 Linux 的 sqlcmd

            【讨论】:

              【解决方案7】:

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

              它可以连接到本地和 sql azure 实例。

              【讨论】:

              • 谢谢! 这应该是公认的答案!对于习惯了mysql CLI 客户端的人来说,这是迄今为止最好的解决方案。
              【解决方案8】:

              我对 freetds 解决方案不满意, 这就是我编写一个类的原因(命令历史记录、表和字段的自动完成等)

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

              【讨论】:

                【解决方案9】:

                【讨论】:

                  【解决方案10】:

                  sqsh (http://www.sqsh.org/) + freetds (http://www.freetds.org)

                  sqsh 主要是 Sybase SQL Server(现在是 ASE)的 isql 替代品,但它可以很好地连接到 SQL Server(前提是您使用 freetds)。

                  要编译,只需将 $SYBASE 指向 freetds 安装,它应该可以从那里开始工作。我整天在 Mac 上使用它。

                  sqsh 最好的部分是高级功能,例如简单的服务器链接(无需在 SQL Server 中设置链接服务器)、流控制和循环(不再连接字符串和执行动态 SQL)和不可见的批量复制/加载。

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

                  【讨论】:

                  • 安装 sqsh 时出现问题:stackoverflow.com/questions/18784242/…
                  • sqsh.org 不再是一个好的链接(目前是日本房地产?)。可以找到on SourceForge,尽管自 2014 年以来没有更新。
                  • 我完全同意 - 这是目前最被低估的软件之一。但自 2014 年以来没有更新,事情看起来有点不祥。
                  【解决方案11】:

                  有一个可用于 PHP 的抽象库。不确定您的客户端将支持什么,但如果它的 Linux 肯定应该支持构建 PHP 查询接口: http://adodb.sourceforge.net/希望对你有所帮助。

                  【讨论】:

                    【解决方案12】:

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

                    【讨论】:

                    • pymssql 似乎没有pyodbc 维护得那么好。事实上,看起来pymssql 开发人员因为pyodbc 而放弃了。
                    【解决方案13】:

                    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
                    

                    【讨论】:

                    • 在 Ubuntu 中,我使用驱动程序路径 /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so。我得到 [ISQL] 错误:无法 SQLConnect。
                    • ODBC 是允许 Linux 与 MSSQL 对话的驱动程序,FreeTDS 解释协议,对吧?
                    • 微软昨天发布了一个用于 Linux 的公共 SQL Server,支持 Docker、Ubuntu 等。microsoft.com/en-us/sql-server/sql-server-vnext-including-Linux
                    • 您是否有机会更新此答案以反映较新版本的代码和包?
                    • 你会推荐什么?
                    【解决方案14】:

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

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

                    【讨论】:

                      【解决方案15】:

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

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        相关资源
                        最近更新 更多