AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 308013
Accepted
GeorgeC
GeorgeC
Asked: 2022-02-25 05:50:52 +0800 CST2022-02-25 05:50:52 +0800 CST 2022-02-25 05:50:52 +0800 CST

在 Ubuntu 上的 QGIS 中打开 SQL Server 数据

  • 772

我正在尝试从 Ubuntu 上的 QGIS 连接到 SQL Server (MSSQL) 数据库。

根据以下链接,我创建了一个 odbc.ini 文件和驱动程序 -

https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/connection-string-keywords-and-data-source-names-dsns?view=sql-server-ver15 和 https: //learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15#ubuntu18

[TEST]

Driver = ODBC Driver 17 for SQL Server

# Server = [protocol:]server[,port]  

Server = tcp:xxx,1433

然后在 QGIS 我得到 在此处输入图像描述

在配置 Windows ODBC 后,我可以从 Windows 机器上的 QGIS 连接到它,所以我很确定这不是服务器/数据库上的权限问题,而是 Ubuntu 20.4 机器上的驱动程序/连接字符串有问题。

我还尝试了https://gis.stackexchange.com/a/216422/2891中的解决方案。

更新

我现在尝试了以下解决方案来使用 docker 安装 QGIS?https://gis.stackexchange.com/a/333581/2891

并查看了有关在 Ubuntu 20.4 中创建 ODBC 链接的许多建议,例如https://help.interfaceware.com/kb/904和http://guywyant.info/log/206/connecting-to-ms-sql-server-from -ubuntu/

我在哪里使用 tsql/telnet 得到响应,但是

isql -v MSSQL devuser 'devpass'

给我

[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified

我能够从我正在添加 ODBC 连接以使用 Azure Data Studio 和 Beekeeper Studio 的机器连接到数据库,没有任何问题。只是 ODBC 连接和需要此功能的软件(如 QGIS)不起作用。

有人在他们的机器上运行这个吗?很高兴用积分奖励完整的答案...

更新 2 因此,在运行以下命令后,我得到了基本连接,但仍然无法连接到 QGIS。可以为这最后一块拼图做些什么?

~# sudo curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add
~# sudo curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list > /etc/apt/sources.list.d/mssql-release.list
~# sudo apt-get update
~# sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18
~# isql -v -k "DRIVER={ODBC Driver 18 for SQL Server};SERVER=tcp:111.111.111.11,1433;UID=Test;PWD=*****;Authentication=SqlPassword;TrustServerCertificate=Yes"
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select * from [Test].[dbo].[Optic_Fibre]

在此处输入图像描述

sql-server ubuntu
  • 1 1 个回答
  • 132 Views

1 个回答

  • Voted
  1. Best Answer
    klause
    2022-03-03T10:25:31+08:002022-03-03T10:25:31+08:00

    这里的关键点是缺少依赖项:libqt5sql5-odbc 和/或 libqt5sql5-tds。

    这里有一个完整的指南:

    1. 安装 ODBC 和 FreeTDS 包:
        sudo apt install unixodbc odbcinst freetds-bin tdsodbc
    
    1. 为 ODBC 连接安装 QGIS 所需的附加包:
        sudo apt install libqt5sql5-odbc libqt5sql5-tds
    
    1. 按照https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server上的说明安装 Microsoft SQL Server 驱动程序

    2. 检查 /etc/odbcinst.ini 的内容以确保列出了 FreeTDS 和 MS SQL Server 驱动程序:

    [FreeTDS]
    Description=v0.91 with protocol v7.2
    Driver=/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
    
    [ODBC Driver 18 for SQL Server]
    Description=Microsoft ODBC Driver 18 for SQL Server
    Driver=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.0.so.1.1
    UsageCount=1
    
    1. 根据以下示例在 /etc/odbc.ini 中创建 MS SQL Server 数据源:
    [ODBC Data Sources]
    
    MSSQLQGIS = ODBC Driver 18 for SQL Server
    
    [MSSQLQGIS]
    
    Driver=ODBC Driver 18 for SQL Server
    Description=QGIS Sql Server
    Server=tcp:<mssql host name/ip>,1433
    TrustServerCertificate=Yes
    
    1. 确保驱动程序和数据源名称后的值与 /etc/odbcinst.ini 中列出的驱动程序名称匹配

    2. 使用 isql 命令模板测试您的连接:

        isql -v <datasource> <user> <password>
    

    例如:

        isql -v MSSQLQGIS jhon pwd321
    
    1. 重命名、删除或备份文件 /usr/local/etc/odbc.ini 和 /usr/local/etc/odbcinst.ini

    2. 创建指向 odbc ini 文件的符号链接:

      sudo ln -s /etc/odbcinst.ini /usr/local/etc/odbcinst.ini sudo ln -s /etc/odbc.ini /usr/local/etc/odbc.ini

    3. 在 GIS Desktop 中,添加一个 MSSQL 连接,如下例所示:

    联系

    • 1

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve