在 Ubuntu 上的 QGIS 中打開 SQL Server 數據
我正在嘗試從 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-ver15 和 https: //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
在配置 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]
這裡的關鍵點是缺少依賴項:libqt5sql5-odbc 和/或 libqt5sql5-tds。
這裡有一個完整的指南:
- 安裝 ODBC 和 FreeTDS 包:
sudo apt install unixodbc odbcinst freetds-bin tdsodbc
- 為 ODBC 連接安裝 QGIS 所需的附加包:
sudo apt install libqt5sql5-odbc libqt5sql5-tds
- 按照https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server上的說明安裝 Microsoft SQL Server 驅動程序
- 檢查 /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
- 根據以下範例在 /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
- 確保驅動程序和數據源名稱後的值與 /etc/odbcinst.ini 中列出的驅動程序名稱匹配
- 使用 isql 命令模板測試您的連接:
isql -v <datasource> <user> <password>
例如:
isql -v MSSQLQGIS jhon pwd321
- 重命名、刪除或備份文件 /usr/local/etc/odbc.ini 和 /usr/local/etc/odbcinst.ini
- 創建指向 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 連接,如下例所示: