Sql-Server

在 Ubuntu 上的 QGIS 中打開 SQL Server 數據

  • March 2, 2022

我正在嘗試從 Ubuntu 上的 QGIS 連接到 SQL Server (MSSQL) 數據庫。

根據以下連結,我創建了一個 odbc.ini 文件和驅動程序 -

https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/connection-string-keywords-and-data-source-names-dsns?view=sql-server-ver15https: //docs.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/904http://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]

在此處輸入圖像描述

這裡的關鍵點是缺少依賴項: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://docs.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 10. 在 GIS Desktop 中,添加一個 MSSQL 連接,如下例所示:

聯繫

引用自:https://dba.stackexchange.com/questions/308013